Odpowiedzi:
Coś w linii
myString.split("\\s+");
Grupuje wszystkie białe spacje jako separator.
Więc jeśli mam ciąg:
"Hello[space][tab]World"
Powinno to dać ciągi znaków "Hello"
i "World"
pominąć pustą przestrzeń między [space]
i [tab]
.
Jak VonC wskazał, odwrotny ukośnik należy uciekł, ponieważ Java najpierw spróbuje uciec ciąg szczególnym charakterze, a także wysyłać które mają być przetwarzane. To, czego chcesz, to dosłowność "\s"
, co oznacza, że musisz zdać "\\s"
. Może to być trochę mylące.
Jest \\s
to równoważne z [ \\t\\n\\x0B\\f\\r]
.
trim()
najpierw: trim().split("\\s++")
- w przeciwnym razie, np. Podzielenie `abc` wyemituje najpierw dwa puste ciągi.
"\\\\s"
?
W większości dialektów wyrażeń regularnych istnieje zestaw wygodnych streszczeń postaci, których możesz użyć do tego rodzaju rzeczy - warto o nich pamiętać:
\w
- Dopasowuje dowolny znak słowa.
\W
- Dopasowuje dowolny znak niebędący słowem.
\s
- Pasuje do każdego znaku białej spacji.
\S
- Pasuje do wszystkich znaków oprócz białych znaków.
\d
- Pasuje do dowolnej cyfry.
\D
- Dopasowuje wszystko oprócz cyfr.
Poszukiwanie „Regex Cheatsheets” powinno nagrodzić cię wieloma przydatnymi streszczeniami.
Aby to działało w JavaScript , musiałem wykonać następujące czynności:
myString.split(/\s+/g)
„\\ s +” powinno załatwić sprawę
Możesz także mieć niełamującą spację xA0 UniCode ...
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
Apache Commons Lang ma metodę dzielenia łańcucha znakami spacji jako ograniczników:
StringUtils.split("abc def")
Może to być łatwiejsze w użyciu niż wzorzec wyrażenia regularnego.
możesz podzielić ciąg według podziału wiersza, używając następującej instrukcji:
String textStr[] = yourString.split("\\r?\\n");
możesz podzielić ciąg według białych znaków, używając następującej instrukcji:
String textStr[] = yourString.split("\\s+");
String str = "Hello World";
String res[] = str.split("\\s+");
Przestudiuj ten kod ... powodzenia
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);
}
}
}