Welches Regex-Muster muss ich an java.lang.String.split()
um eine Zeichenkette in ein Array von Teilzeichenketten unter Verwendung aller Leerzeichen aufzuteilen ( ' '
, '\t'
, '\n'
, usw.) als Trennzeichen?
Antworten
Zu viele Anzeigen?Alles was Sie brauchen ist um mit einem der Sonderzeichen der Java Ragex Engine zu teilen,
und das ist WhiteSpace-Zeichen
- \d Stellt eine Ziffer dar:
[0-9]
- \D Stellt eine Nicht-Ziffer dar:
[^0-9]
- \s Repräsentiert eine Whitespace-Zeichen einschließlich
[ \t\n\x0B\f\r]
- \S Stellt ein Nicht-Leerzeichen als
[^\s]
- \v Stellt ein vertikales Leerzeichen dar als
[\n\x0B\f\r\x85\u2028\u2029]
- \V Stellt ein nicht-vertikales Leerzeichen dar als
[^\v]
- \w Stellt ein Wortzeichen dar als
[a-zA-Z_0-9]
- \W Stellt ein Nicht-Wort-Zeichen dar als
[^\w]
Der wichtigste Punkt dabei ist zu beachten ist, dass das kleine Schriftzeichen \s
steht für alle Arten von Leerzeichen einschließlich eines einzelnen Leerzeichens [ ]
, Tabulatorzeichen [ ]
oder etwas Ähnliches.
Wenn Sie also versuchen, etwas wie das hier zu tun
String theString = "Java<a space><a tab>Programming"
String []allParts = theString.split("\\s+");
Sie erhalten dann die gewünschte Ausgabe.
Einige sehr nützliche Links:
Ich hoffe, das hilft Ihnen am besten!!!
Um eine Zeichenkette mit beliebige Unicode-Whitespaces müssen Sie Folgendes verwenden
s.split("(?U)\\s+")
^^^^
El (?U)
inline eingebettete Flag-Option ist das Äquivalent zu Pattern.UNICODE_CHARACTER_CLASS
das ermöglicht \s
um alle Zeichen aus der Unicode-Kategorie "Leerzeichen" abzubilden.
Wenn Sie mit Whitespace und die Leerzeichen in dem resultierenden Array beibehalten verwenden
s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")
Siehe die Regex-Demo . Siehe Java-Demo :
String s = "Hello\t World\u00A0»";
System.out.println(Arrays.toString(s.split("(?U)\\s+"))); // => [Hello, World, »]
System.out.println(Arrays.toString(s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")));
// => [Hello, , World, , »]