Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
11.01.14, 16:13
|
#1
|
Newbie
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
|
[gelöst] [Java] eingelesenen String splitten
Hi!
Mein Problem ist folgendes :
(1) Ich lese mit ,String x = readString ("Blabla") , einen String ein und möchte diesen nun splitten. Soweit ich mich eingelesen habe und durch probieren ist dies mit x.split möglich.
Doch genau da ist mein Problem , wenn ich jetzt sagen wir mal " Hallo wie gehts" eingebe und es mit x.split(" ") ausführe, wird nur das erste Array Feld [0] mit Hallo gefühlt sonst passiert nichts. Wenn ich statt den Leerzeichen "." oä verwende klappt es , doch ich will da ein Leerzeichen stehen haben .
(2) Nehmen wir an meine Eingabe lautet " Hallo,du,wie;gehts#dir" was muss ich dann bei x.split in die Klammer eingeben? (",") würde ja nur das Komma entfernen.
Hoffe jmd. kennt ne Lösung für =)
|
|
|
11.01.14, 17:09
|
#2
|
Banned
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
|
Wofür eine Lösung?
Die Split-Methode funktioniert und Du kannst diese einsetzen.
Was willst Du denn genau haben?
Das ist hier nicht klar!
|
|
|
11.01.14, 17:47
|
#3
|
Newbie
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
|
Zusammenfassend will ich folgendes :
(1) das ich ein zuvor eingelesenen String der mit " Leerzeichen" getrennt wurde und nicht mit ,.; oä splitten will und das dieser dann in dem Array komplett ausgelesen werden kann .
(2) splitten mit der Benutzung von mehr als einem Symbol "wie,geht;es#dir" , sodass am Ende ein Array mit den 4 Wörtern entsteht.
|
|
|
11.01.14, 21:32
|
#4
|
Banned
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
|
1. .split(" ") splittet nach Leerzeichen
2. Hierfür verwendest Du am besten einen regulären Ausdruck. Da solltest Du Dich am besten mal einlesen.
|
|
|
11.01.14, 22:51
|
#5
|
Anfänger
Registriert seit: Mar 2012
Beiträge: 12
Bedankt: 7
|
Etwas anderes als split(" ") mit leerzeichen aufzurufen wird dir nicht übrig bleiben, wenn der benutzer etwas wie "Hallo,du,wie;gehts#dir" eingibt benutzt er das programm nicht korrekt.
Du kanst natürlich eine eigene split funktion schreiben die jede mögliche substring kombination erfasst und darauf prüft ob es sich um ein korrektes deutsches wort handelt und diese dann in einem array speichert, viel spass dabei
|
|
|
12.01.14, 07:09
|
#6
|
Banned
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
|
@Chrizdoe
Leider vollkommen falsch.
Split arbeitet nämlich gegen reguläre Ausdrücke und kann auch solche Sonderfälle leicht behandeln.
|
|
|
12.01.14, 10:28
|
#7
|
Mitglied
Registriert seit: Aug 2009
Beiträge: 398
Bedankt: 131
|
Regex: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
s.split("[#;,]") sollte es (ungetestet) tun.
|
|
|
12.01.14, 12:40
|
#8
|
Newbie
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
|
@Dante1253 Danke das klappt super
@ProgMaster & ChrizDoe wenn ich einen vordefinierten String nehme ala " Hallo wie geht es dir" , dann stimmt es und er teilt die einzelnen Wörter auf .
Hab ich jedoch einen String der eingegeben wird durch z.b. einer Abfrage ( Scan , io usw) , dann wird nur das erste Wort in dem Array gespeichert und ich kann nur auf das [0] Element zugreifen .
Also wird z.b. nur "Hallo" gespeichert und Rest bleibt weg , denn wenn ich das [1] Element aufrufen möchte , bekomme ich einen Arrayindexoutofboundsexception error.
|
|
|
12.01.14, 13:26
|
#9
|
Anfänger
Registriert seit: Mar 2012
Beiträge: 12
Bedankt: 7
|
Zitat:
Zitat von NetWebs
@Chrizdoe
Leider vollkommen falsch.
Split arbeitet nämlich gegen reguläre Ausdrücke und kann auch solche Sonderfälle leicht behandeln.
|
Natürlich kannst du solche sonderfälle mit split behandeln aber dann müsstest du im vorfeld schon wissen was der benutzer als trennzeichen zwischen den wörtern eingibt und für jedes eine eigene split anweisung benutzen oder regex benutzen.
@cinq
guck dir mal den Scanner in java.util an, der hat ne funktion namens nextLine()
|
|
|
12.01.14, 13:28
|
#10
|
Newbie
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
|
Da ich noch ziemlich weit am Anfang bin , geh ich mal davon aus das er eine Satz eingibt und als Trennzeichen das "Leerzeichen" verwendet. Die Eingabe würde dann z.b " wie geht es dir " lauten .
|
|
|
12.01.14, 13:49
|
#11
|
Anfänger
Registriert seit: Mar 2012
Beiträge: 12
Bedankt: 7
|
Scanner liest einfach eine Zeile von der quelle die du ihm gibst ein, in deinem fall die standardeingabe/konsole. nextLine() liefert dann einen string zurück den du mit split in die einzelnen wörter aufteilen kannst
|
|
|
12.01.14, 15:21
|
#12
|
Newbie
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
|
Danke mit der Scanner Klasse klappt es , habe es davor mit den IOTools probiert und da wurde der String nicht richtig zerteilt .
String x = readString("Satz eingeben");
String [] Word = x.split(" ");
Und das hat nicht so richtig geklappt da er nur das erste Array Feld mit z.b. hallo füllt und bei der Abfrage vom [1] kam immer ein Arrayindexoutofboundsexception error , ka warum ^^ .
|
|
|
12.01.14, 16:13
|
#13
|
Anfänger
Registriert seit: Mar 2012
Beiträge: 12
Bedankt: 7
|
Der fehler ist aufgetreten weil readString nur bis zum leerzeichen einliest und in x dann nur "hallo" gespeichert ist also liefert split auch nur ein array mit einem eintrag zurück.
du solltest immer prüfen wie viele einträge ein array hat bevor du auf es zugreifst, never trust user data
|
|
|
12.01.14, 19:20
|
#14
|
Newbie
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
|
Das hatte ich nicht bedacht gehabt -_- .
Danke für deine Hilfe hat mich wirklich weiter gebracht =)
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
().
|