Antworten:
Etwas in den Zeilen von
myString.split("\\s+");
Dadurch werden alle Leerzeichen als Trennzeichen gruppiert.
Also, wenn ich die Zeichenfolge habe:
"Hello[space][tab]World"
Dies sollte die Zeichenfolgen ergeben "Hello"
und "World"
den leeren Raum zwischen dem [space]
und dem weglassen [tab]
.
Wie VonC betonte, sollte der Backslash maskiert werden, da Java zuerst versuchen würde, die Zeichenfolge einem Sonderzeichen zu maskieren und diese zum Parsen zu senden . Was Sie wollen, ist das Wörtliche "\s"
, was bedeutet, dass Sie bestehen müssen "\\s"
. Es kann etwas verwirrend werden.
Das \\s
entspricht [ \\t\\n\\x0B\\f\\r]
.
trim()
zuerst trim().split("\\s++")
Folgendes tun müssen : - Andernfalls werden beim Teilen von `abc` zuerst zwei leere Zeichenfolgen ausgegeben.
"\\\\s"
?
In den meisten Regex-Dialekten gibt es eine Reihe praktischer Charakterzusammenfassungen, die Sie für diese Art von Dingen verwenden können - dies sind gute, an die Sie sich erinnern sollten:
\w
- Entspricht einem beliebigen Wortzeichen.
\W
- Entspricht einem beliebigen Nichtwortzeichen.
\s
- Entspricht einem beliebigen Leerzeichen.
\S
- Entspricht alles andere als Leerzeichen.
\d
- Entspricht einer beliebigen Ziffer.
\D
- Entspricht allem außer Ziffern.
Eine Suche nach "Regex Cheatsheets" sollte Sie mit vielen nützlichen Zusammenfassungen belohnen.
Damit dies in Javascript funktioniert , musste ich Folgendes tun:
myString.split(/\s+/g)
"\\ s +" sollte den Trick machen
Möglicherweise haben Sie auch einen UniCode-Leerzeichen xA0 ...
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
Apache Commons Lang verfügt über eine Methode zum Teilen einer Zeichenfolge mit Leerzeichen als Trennzeichen:
StringUtils.split("abc def")
Dies ist möglicherweise einfacher zu verwenden als ein Regex-Muster.
Da es sich um einen regulären Ausdruck handelt und ich davon ausgehe, dass Sie auch keine nicht alphanumerischen Zeichen wie Kommas, Punkte usw. möchten, die von Leerzeichen umgeben sein könnten (z. B. "eins, zwei" sollte [eins] [zwei] geben), es sollte sein:
myString.split(/[\s\W]+/)
Mit der folgenden Anweisung können Sie eine Zeichenfolge nach Zeilenumbruch aufteilen:
String textStr[] = yourString.split("\\r?\\n");
Mit der folgenden Anweisung können Sie eine Zeichenfolge nach Leerzeichen aufteilen:
String textStr[] = yourString.split("\\s+");
String str = "Hello World";
String res[] = str.split("\\s+");
Studieren Sie diesen Code .. viel Glück
import java.util.*;
class Demo{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.print("Input String : ");
String s1 = input.nextLine();
String[] tokens = s1.split("[\\s\\xA0]+");
System.out.println(tokens.length);
for(String s : tokens){
System.out.println(s);
}
}
}