2012-04-09 31 views
41

Quiero dividir una cadena comoSeparar una cadena con múltiples espacios

"first  middle last" 

con String.split(). Pero cuando intento para dividirlo consigo

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

He intentado utilizar String.isEmpty() para comprobar si hay cadenas vacías después de que los separé pero no funciona en Android. Aquí está mi código:

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

Creo que hay una manera de dividir así: {"first","middle","last"} pero no puede encontrar la manera.

¡Gracias por la ayuda!

Respuesta

113

Dado que el argumento para split() es un regular expression, se puede buscar uno o más espacios (" +") en lugar de un solo espacio (" ").

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

hmm nunca pensé en usar sólo "+" Siempre estoy más convencional usando "\\ s +". ¡Buena idea! – Kevin

+3

@Kevin, bueno, '\ s' incluye más que espacios. – rid

+0

¡Gracias esto ayudó mucho! – smarti02

2

Desde split() utiliza regular expressions, se puede hacer algo como s.split("\\s+") para establecer el delimitador de división para ser cualquier número de caracteres de espacio en blanco.

24

intenta usar este s.split("\\s+");

4

si tiene una cadena como

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

y desea obtener una matriz como

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

usted debe tratar

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

La parte {2,} define que se necesitan al menos 2 y hasta casi infinitos espacios en blanco para que se produzca la división.

2

¿Qué le parece usar algo que SDK de Android proporciona de fábrica?

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

¿Cuál es el motivo por el que se usan las funciones de Android SDK en lugar de un código más portátil? – midnight1247

5

Esto funcionó para mí.

s.split(/\s+/) 

var foo = "first  middle last"; 
 

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

+0

es java no javascript – soorapadman

Cuestiones relacionadas