2010-05-30 13 views

Respuesta

27

Debe nos estará dando código que demuestra el problema, pero mi conjetura es que hizo algo como esto:

String str = "22 "; 
str.trim(); 
System.out.println(str.length()); 

Pero str.trim() no cambia str (como cadenas son inmutables). En su lugar, devuelve una nueva cadena recortada. Así que hay algo como esto:

String str = "22 "; 
str = str.trim(); 
System.out.println(str.length()); 
+4

yup eso es, wow ustedes son rápidos O_o – Jan

+7

5 minutos de tiempo de respuesta?!?! Vamos chicos, podemos hacerlo mejor que eso ...;) –

11

Prueba esto:

System.out.println(java.util.Arrays.toString(theString.toCharArray())); 

Esto vuelca la versión char[] del String, por lo que tal vez puede ver si contiene algo gracioso.

+5

+1 Es una buena herramienta de diagnóstico, incluso si no fue necesaria esta vez. –

+0

Ni siquiera tiene el mismo problema es OP, pero esto realmente ayudó a descubrir que la cadena estaba usando códigos de escape ANSI. +1 –

-2

ya he encontrado una razón al formular la pregunta, Im que va a responder a mí mismo ..

Si la cadena fue creado por .substring o divididos, toda la cadena se guarda más la posición y la longitud de la subcadena.

esto al parecer no puedo ser recortado (fue "22")

+3

'length()' no devuelve la longitud de la matriz de respaldo, y debe poder recortarse. Ver mi respuesta –

+0

mal, puede ver la respuesta anterior – Jan

Cuestiones relacionadas