Come faccio a dividere una stringa con qualsiasi carattere di spazio bianco come delimitatore?

Quale schema regex dovrei passare al metodo java.lang.String.split() per dividere una stringa in una matrice di sottostringhe usando tutti i caratteri di spazio bianco (' ', '\t', '\n', etc.) come delimitatori?

Soluzione

Qualcosa nelle linee di

myString.split("\\s+");

Questo raggruppa tutti gli spazi bianchi come delimitatore.

Quindi se ho la stringa

"Ciao[spazio][tab]Mondo"

Questo dovrebbe produrre le stringhe "Hello" e "World" e omettere lo spazio vuoto tra il [spazio] e il [tab].

Come ha fatto notare VonC, il backslash dovrebbe essere sottoposto a escape, perché Java proverebbe prima a fare l'escape della stringa in un carattere speciale, e manderebbe quello ad essere analizzato. Quello che vuoi è il letterale "\s", il che significa che devi passare "\s". Può creare un po' di confusione.

Il "s" è equivalente a "[ \t\n \x0B\f\r]`

Commentari (4)

Nella maggior parte dei dialetti regex ci sono una serie di comodi riassunti di caratteri che puoi usare per questo tipo di cose - questi sono buoni da ricordare:

w - Corrisponde a qualsiasi carattere di parola.

W - Corrisponde a qualsiasi carattere non parola.

`s - Corrisponde a qualsiasi carattere di spazio bianco.

\S - Corrisponde a tutto tranne che ai caratteri dello spazio bianco.

d - Corrisponde a qualsiasi cifra.

D - Corrisponde a qualsiasi cosa tranne le cifre.

Una ricerca per "Regex Cheatsheets" dovrebbe ricompensarti con un sacco di utili riassunti.

Commentari (4)

"\\s+" dovrebbe fare il trucco

Commentari (2)