Alnitak tiene razón en que las cadenas vacías finales se descartarán por defecto.
Si desea tener cadenas finales vacías, debe usar split(String, int)
y pasar un número negativo como el parámetro limit
.
El parámetro limit
controla el número de veces que se aplica el patrón y por lo tanto afecta a la longitud de la matriz resultante. Si el límite de n es mayor que cero entonces el patrón se aplicarán a lo sumo n - 1 veces, longitud de la matriz no será mayor que n, y la última entrada del array contendrá toda entrada más allá del último delimitador coincidente. Si n es no positivo, el patrón se aplicará tantas veces como sea posible y la matriz puede tener cualquier longitud.Si n es cero, entonces el patrón se aplicará tantas veces como sea posible, la matriz puede tener cualquier longitud, y las cadenas vacías posteriores serán descartadas.
Tenga en cuenta que split(aString)
es un sinónimo de split(aString, 0)
:
Este método funciona como si invocando el método de dos split
discusión con la expresión dada y un argumento límite de cero. Por lo tanto, las cadenas vacías no se incluyen en la matriz resultante.
Además, debe usar un bucle para obtener los valores de la matriz; esto evita un posible ArrayIndexOutOfBoundsException
.
lo que el código debe ser corregido (suponiendo que desea las cadenas vacías al final):
String sample = "::";
String[] splitTime = sample.split(":", -1);
for (int i = 0; i < splitTime.length; i++) {
System.out.println("Value " + i + " : \"" + splitTime[i] + "\"");
}
Salida:
Value 0 : ""
Value 1 : ""
Value 2 : ""
Un consejo. StringTokenizer trataría los dos dos puntos como un delimitador. De todos modos, StringTokenizer es una clase heredada; los desarrolladores son alentados a usar split() en su lugar. –
Acerca del uso de splitTime.length: en este ejemplo, la longitud siempre será cero. Todos los "tokens" deberían haber sido cadenas de longitud cero, y StringTokenizer nunca devuelve tokens vacíos. –