myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[gelöst] [Java] eingelesenen String splitten

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 11.01.14, 16:13   #1
cinq
Newbie
 
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
cinq ist noch neu hier! | 0 Respekt Punkte
Standard [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 =)
cinq ist offline   Mit Zitat antworten
Ungelesen 11.01.14, 17:09   #2
NetWebs
Banned
 
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
NetWebs ist noch neu hier! | 0 Respekt Punkte
Standard

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!
NetWebs ist offline   Mit Zitat antworten
Ungelesen 11.01.14, 17:47   #3
cinq
Newbie
 
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
cinq ist noch neu hier! | 0 Respekt Punkte
Standard

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.
cinq ist offline   Mit Zitat antworten
Ungelesen 11.01.14, 21:32   #4
ProgMaster
Banned
 
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
ProgMaster ist noch neu hier! | 0 Respekt Punkte
Standard

1. .split(" ") splittet nach Leerzeichen

2. Hierfür verwendest Du am besten einen regulären Ausdruck. Da solltest Du Dich am besten mal einlesen.
ProgMaster ist offline   Mit Zitat antworten
Ungelesen 11.01.14, 22:51   #5
ChrizDoe
Anfänger
 
Registriert seit: Mar 2012
Beiträge: 12
Bedankt: 7
ChrizDoe ist noch neu hier! | 0 Respekt Punkte
Standard

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
ChrizDoe ist offline   Mit Zitat antworten
Ungelesen 12.01.14, 07:09   #6
NetWebs
Banned
 
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
NetWebs ist noch neu hier! | 0 Respekt Punkte
Standard

@Chrizdoe

Leider vollkommen falsch.
Split arbeitet nämlich gegen reguläre Ausdrücke und kann auch solche Sonderfälle leicht behandeln.
NetWebs ist offline   Mit Zitat antworten
Ungelesen 12.01.14, 10:28   #7
Dante1253
Mitglied
 
Registriert seit: Aug 2009
Beiträge: 398
Bedankt: 131
Dante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt PunkteDante1253 leckt gerne myGully Deckel in der Kanalisation! | 310855 Respekt Punkte
Standard

Regex: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
s.split("[#;,]") sollte es (ungetestet) tun.
Dante1253 ist offline   Mit Zitat antworten
Ungelesen 12.01.14, 12:40   #8
cinq
Newbie
 
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
cinq ist noch neu hier! | 0 Respekt Punkte
Standard

@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.
cinq ist offline   Mit Zitat antworten
Ungelesen 12.01.14, 13:26   #9
ChrizDoe
Anfänger
 
Registriert seit: Mar 2012
Beiträge: 12
Bedankt: 7
ChrizDoe ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von NetWebs Beitrag anzeigen
@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()
ChrizDoe ist offline   Mit Zitat antworten
Ungelesen 12.01.14, 13:28   #10
cinq
Newbie
 
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
cinq ist noch neu hier! | 0 Respekt Punkte
Standard

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 .
cinq ist offline   Mit Zitat antworten
Ungelesen 12.01.14, 13:49   #11
ChrizDoe
Anfänger
 
Registriert seit: Mar 2012
Beiträge: 12
Bedankt: 7
ChrizDoe ist noch neu hier! | 0 Respekt Punkte
Standard

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
ChrizDoe ist offline   Mit Zitat antworten
Ungelesen 12.01.14, 15:21   #12
cinq
Newbie
 
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
cinq ist noch neu hier! | 0 Respekt Punkte
Standard

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 ^^ .
cinq ist offline   Mit Zitat antworten
Ungelesen 12.01.14, 16:13   #13
ChrizDoe
Anfänger
 
Registriert seit: Mar 2012
Beiträge: 12
Bedankt: 7
ChrizDoe ist noch neu hier! | 0 Respekt Punkte
Standard

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
ChrizDoe ist offline   Mit Zitat antworten
Ungelesen 12.01.14, 19:20   #14
cinq
Newbie
 
Registriert seit: Apr 2010
Beiträge: 59
Bedankt: 15
cinq ist noch neu hier! | 0 Respekt Punkte
Standard

Das hatte ich nicht bedacht gehabt -_- .
Danke für deine Hilfe hat mich wirklich weiter gebracht =)
cinq ist offline   Mit Zitat antworten
Antwort


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

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.


Sitemap

().