2012-08-27 8 views
5

No veo por qué la siguiente salida tiene sentido.Comportamiento del método de división de cadenas

Cadena método de división en una cadena vacía devolver un array de cadenas con una longitud de 1

String[] split = "".split(",");
System.out.println(split.length);
devoluciones array de cadenas con una longitud de 1

String[] split = "Java".split(",");
System.out.println(split.length);
devoluciones array de cadenas con longitud 1

Cómo ¿¿para diferenciar??

+3

¿Qué * debería * hacer? –

+1

No encontró lugar para dividirse, por lo que devolvió la matriz con toda la Cadena. – Pshemo

+0

diría que debería devolver 0 –

Respuesta

10

De the documentation:

La matriz devuelta por este método contiene cada una subcadena de esta cadena que es terminada por otra subcadena que coincide con la expresión dada o termina al final de la cadena.

Para responder a su pregunta, se hace lo que se espera que haga: la subcadena devuelta se termina a finales de la cadena de entrada (ya que no había , que se encuentran). La documentación también indica:

Si la expresión no coincide con ninguna parte de la entrada, la matriz resultante tiene solo un elemento, concretamente esta cadena.

Tenga en cuenta que esto es una consecuencia de la primera afirmación. No es una circunstancia adicional que los desarrolladores de Java agregaron en caso de que no se pudiera encontrar la cadena de búsqueda.

+0

javadoc los gobierna todos :) –

1

Devuelve la cadena original (que en este caso es la cadena vacía) ya que no hubo, para dividir.

2

Pegué esto, también. Lo que está devolviendo es la cadena hasta, pero sin incluir, el carácter dividido. Si desea obtener sin condiciones, usar StringTokenizer:

StringTokenizer st = new StringTokenizer(someString,','); 
int numberOfSubstrings = st.countTokens(); 
+0

Este trabajo código ¡No, comillas simples son erróneas y se volverán 1 para un código como:. StringTokenizer nueva ("ABC", ";") countTokens() –

0

Devuelve uno porque está midiendo el tamaño de la matriz dividida, que contiene un elemento: una cadena vacía.

Cuestiones relacionadas