que - Comportamiento de String.split en java 1.6?
java.lang.string que es (3)
Dado que limit = 0, las cadenas vacías finales no están incluidas. Tratar
System.out.println(s.split(";", -1).length);
y obtendrás 7
Mi código es:
String s = "1;;;; 23;;";
System.out.println(s.split(";").length);
y da como salida 5
. El código fuente de split
es:
public String[] split(String regex) {
return split(regex, 0);
}
y la documentación dice:
Este método funciona como si invocando el método de división de dos argumentos (java.lang.String, int) con la expresión dada y un argumento de límite de cero. Por lo tanto, las cadenas vacías no se incluyen en la matriz resultante.
La cadena "boo: and: foo", por ejemplo, produce los siguientes resultados con estas expresiones:
Regex Result : { "boo", "and", "foo" } o { "b", "", ":and:f" }
Si imprimo las cadenas que tengo:
1
23
¿No debería obtener de este 1;;;; 23;;
1;;;; 23;;
algo como {"1", "", "", "", " 23", ""}
?
No, cinco es correcto, como dice su documento de cotización:
Por lo tanto, las cadenas vacías no se incluyen en la matriz resultante.
Por eso, las cadenas vacías al final de la matriz se omiten. Si quieres las cadenas vacías, haz lo que dice la respuesta de Evgeniy Dorofeev y especifica un límite de -1.
Se dividirá la cadena cuando alguna vez '';'' presentar y poner en conjunto.