Welches Regex-Muster muss ich der Methode java.lang.String.split()
übergeben, um eine Zeichenkette in ein Array von Teilzeichenketten aufzuteilen, wobei alle Leerzeichen (' ', '\t', '\n', usw.) als Begrenzungszeichen verwendet werden?
Etwas in der Art von
myString.split("\\s+");
Damit werden alle Leerzeichen als Begrenzungszeichen zusammengefasst.
Wenn ich also die Zeichenfolge habe:
"Hallo[Leerzeichen][Tab]Welt"`
Dies sollte die Zeichenketten "Hello"
und "World"
ergeben und das Leerzeichen zwischen dem [space]
und dem [tab]
weglassen.
Wie VonC anmerkte, sollte der Backslash escaped werden, weil Java zuerst versuchen würde, die Zeichenkette in ein Sonderzeichen umzuwandeln, und das dann zu parsen. Was Sie wollen, ist das Literal "\\s"
, was bedeutet, dass Sie "\\s"
übergeben müssen. Das kann ein bisschen verwirrend sein.
Das "\s" ist äquivalent zu `[ \t\n\x0B\\f\r]
In den meisten Regex-Dialekten gibt es eine Reihe von bequemen Zeichenzusammenfassungen, die Sie für diese Art von Dingen verwenden können - diese sind gut zu merken:
\w
- Entspricht einem beliebigen Wortzeichen.
\W
- Passt auf jedes Nicht-Wort-Zeichen.
\s
- Passt auf jedes beliebige Zeichen mit Leerzeichen.
\S
- Passt auf alle Zeichen außer Leerzeichen.
\d
- Passt auf jede Ziffer.
\D
- Passt auf alles außer Ziffern.
Eine Suche nach "Regex Cheatsheets" sollte Sie mit einer ganzen Reihe nützlicher Zusammenfassungen belohnen.