Tengo la cadena "22"
y obtengo 3 como longitud;Java: obtener un string.length() incorrecto después de usar trim()
que utilizan .trim()
¿Qué otra cosa podría ser una razón para esto?
Tengo la cadena "22"
y obtengo 3 como longitud;Java: obtener un string.length() incorrecto después de usar trim()
que utilizan .trim()
¿Qué otra cosa podría ser una razón para esto?
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());
yup eso es, wow ustedes son rápidos O_o – Jan
5 minutos de tiempo de respuesta?!?! Vamos chicos, podemos hacerlo mejor que eso ...;) –
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.
+1 Es una buena herramienta de diagnóstico, incluso si no fue necesaria esta vez. –
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 –
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")
'length()' no devuelve la longitud de la matriz de respaldo, y debe poder recortarse. Ver mi respuesta –
mal, puede ver la respuesta anterior – Jan
Vas a tener que mostrarnos su código, ya que como se ha dicho, no es posible. – CPerkins