Java einen Satz in ein Array aus den einzelnen Wörtern umwandeln ohne Split-Methode?
Hey,
ich wollte hiermit einmal fragen, wie ich ohne die "split"-Methode in Java einen Satz in ein Array aus den einzelnen Wörtern umwandeln kann.
Habe es hin bekommen, dass es mit einzelnen Leerzeichen dazwischen funktioniert, mit mehreren jedoch nicht.
Es soll das hier passieren:
Eingabe: "Hallo ich bin ein Satz"
Array: ["Hallo", "ich", "bin", "ein", "Satz"]
Vielen Dank im Voraus.
Mit freundlichen Grüßen
Fr3ak
1 Antwort
Ein einfaches Vorgehen wäre das schrittweise Abbauen des Strings via substring. Das immer nächste Vorkommen eines Leerzeichens ermittelst du via indexOf.
Pseudocode:
sentence = "Hello world, I am here!"
words = []
while indexOf(sentence, ' ') > -1:
end = indexOf(sentence, ' ')
word = substr(sentence, 0, end)
if length(sentence) <= end + 1:
break
sentence = substr(sentence, end + 1)
if word not empty:
append(words, word)
if sentence not empty:
append(words, sentence)
Da die Anzahl an Wörtern anfangs unbekannt ist, wäre es einfacher, mit einer Liste zu arbeiten. Deren Elemente kann man später immer noch einem Array zuführen.
Es gibt noch einige andere Lösungswege. Beispielsweise könnte man durch jedes einzelne Zeichen des Satzes iterieren. So lange kein Leerzeichen auftaucht, werden die Zeichen gesammelt (bspw. mittels StringBuilder). Sobald ein Leerzeichen auftaucht oder der String komplett durchlaufen wurde, werden die aktuell gesammelten Zeichen zu einem String verbunden und einer Liste / einem Array angefügt. Leere Strings würde ich einmal wieder herausfiltern.
Das sehe ich nicht als problematisch an, denn wie schon geschrieben gibt es noch einige andere Lösungswege.
Zudem kann man sich mit den Grundbausteinen (Kontrollstrukturen, etc.) auch eine eigene substring-Methode implementieren.
Dürfen halt auch leider kein Substring benutzen.