Java String split bei punkt und komma?
Hi! Ich habe eine Frage:
Man kann ja in Java mit .split einen String in einen Array teilen. Das geht allerdings damit nur mit einem Zeichen, d.h. nur bei z.B. einem Punkt.
satz.split(".");
Ich muss aber einen Text bei zwei verschiedenen Zeichen teilen, also bei einem Punkt und einem Komma. So was wie das suche ich:
satz.split(".",",")
Gibt es eine möglichkeit, so etwas zu machen? Danke schon mal!
2 Antworten
Einsimples binäres "oder" sollte funktionieren.
String[] parts = satz.split("\\.|,");
Du könntest auch mit Regular Expressions arbeiten. Mit RegEx kannst du Strings gezielt anhand einer definierten Syntax durchsuchen, in Gruppen teilen usw.Lies dich einfach mal in das Thema ein, all zu schwer ist es nicht. Im Beispiel oben ist zB ein RegEx-Argument enthalten, deswegen der doppelte Backslash.
Dein "binäres oder" ist doch bereits ein Regulärer Ausdruck, oder was meinst du mit "du könntest auch mit Regular Expressions arbeiten"?
Aber wenn wir schon dabei sind, und es dir sowieso nur um ein "oder" einzelner Zeichen geht, dann nimm doch gleich eine Charakter-Klasse, und entferne bei der Gelegenheit gleich überschüssige Leerzeichen:
String parts[] = str.split("\\s*[.,]\\s*");
Regular Expressions können sehr hilfreich sein, so kannst du zum Beispiel mit RegEx alle Wörter in einem String matchen die mit einem D anfangen und mit einem L aufhören, zwischen 5 und 8 Buchstaben lang sind und wo der dritte Buchstabe groß geschrieben ist.
Guck dir mal die Seite https://regex101.com an, dort kann man wunderbar mit regulären Ausdrücken experimentieren.
An dieser Stelle muss beachtet werden, dass es mehrere verschiedene Regex-Engines gibt, die teils andere Features unterstützen. Dieser Artikel könnte eine Vorstellung davon liefern. Wenn du für Java reguläre Ausdrücke testen möchtest, dann tue dies entweder in einer Java-Applikation oder nutze einen entsprechenden Regex Tester, online gibt es dafür ja genug.
Danke, das wusste ich schon. Wie du aus dem Antwort-Verlauf entnehmen kannst bin nicht ich derjenige dem du das erklären solltest, aber trotzdem lieb dass du dir Sorgen um mich machst.
Hmn, ich habe unter dem falschen Kommentar kommentiert. Allerdings frage ich mich nun auch, wieso du https://regex101.com/ empfiehlst. Die Seite bietet keine Regex-Engine für Java an.
Klar, kein Problem. Ich habe mich ein wenig von oben herab behandelt gefühlt, das ist mir dann doch ein wenig gegen den Strich gegangen. Aber nichts für ungut.
Ich habe ihm die Seite zum generellen experimentieren mit RegEx empfohlen, nicht bezogen auf Java.
Da String.split ein Regex annimmt müsste folgendes funktionieren (?: ist optional):
satz.split("(?:\\.|,)");
Punkt allein müsste bei jedem Zeichen splitten.
Falls du andere Pattern (Muster) brauchst kannst du dich über diese auf https://regexr.com informieren und dieses gleich ausprobieren.
Tausend dank! Wusste gar nicht, dass so etwas möglich ist ;)