2012-04-09 26 views
41

voglio dividere una stringa comesuddivisione di un testo con più spazi

"first  middle last" 

con String.split(). Ma quando provo a dividerlo ottengo

String[] array = {"first","","","","middle","","last"} 

Ho provato ad utilizzare String.isEmpty() per verificare la presenza di stringhe vuote dopo di loro ho diviso, ma non funziona in Android. Qui è il mio codice:

String s = "First Middle Last"; 
String[] array = s.split(" "); 
for(int i=0; i<array.length; i++) { 
    //displays segmented strings here 
} 

Penso che ci sia un modo per dividere in questo modo: {"first","middle","last"}, ma non riesco a capire come.

Grazie per l'aiuto!

risposta

113

Dal momento che l'argomento di split() è un regular expression, si può guardare per uno o più spazi (" +") invece di uno solo spazio (" ").

String[] array = s.split(" +"); 
+1

hmm non ho mai pensato di usare solo "+" Sono sempre più convenzionale utilizzando "\\ s +". Buona idea! – Kevin

+3

@Kevin, beh, '\ s' include più di semplici spazi. – rid

+0

Grazie a questo ha aiutato molto !!! – smarti02

2

Dal split() utilizza regular expressions, si può fare qualcosa di simile s.split("\\s+") per impostare il delimitatore di divisione per essere qualsiasi numero di caratteri di spaziatura.

24

tenta di utilizzare questo s.split("\\s+");

4

se si dispone di una stringa come

String s = "This is a test string This is the next part This is the third part"; 

e si desidera ottenere un array come

String[] sArray = { "This is a test string", "This is the next part", "This is the third part" } 

si dovrebbe cercare

String[] sArray = s.split("\\s{2,}"); 

La parte {2,} definisce che sono necessari almeno 2 e fino a quasi infinito di spazi bianchi per il verificarsi della divisione.

2

Che ne dici di utilizzare qualcosa che è fornito dalla scatola Android SDK.

TextUtils.split(stringToSplit, " +"); 
+0

Qual è il motivo dell'utilizzo delle funzioni di Android SDK anziché di un codice più portatile? – midnight1247

5

Questo ha funzionato per me.

s.split(/\s+/) 

var foo = "first  middle last"; 
 

 
console.log(foo.split(/\s+/));

+0

java non javascript – soorapadman

Problemi correlati