2012-01-16 22 views
6

Estoy tratando de analizar un int desde un elemento de matriz String. Aquí está mi código:Java ParseInt Sanity Check

String length = messageContents[k].replace("Content-Length:", "").replace(" ", ""); 
System.out.println("Length is: " + length); 
int test= Integer.parseInt(length); 

El System.out.println devuelve lo siguiente: La longitud es : 23

Sin embargo, cuando trato de analizar el String en un int, una java.lang.NumberFormatException se tira;

java.lang.NumberFormatException: For input string: "23" 

estoy un poco confundido cómo 23 beneficias analiza en un int. Solo puedo suponer que hay algún otro personaje que lo está impidiendo, pero no puedo verlo por mi vida.

¿Alguna sugerencia?

Gracias

actualización

Despite the String length having only two characters, Java reports its length as three: 
Length is: '23' 
Length of length variable is: 3 
length.getBytes = [[email protected] 
+0

que notar que tiene un arrastre "" en la primera linea Tal vez un error de copia y pasado? –

+0

Ahh sí, ignora eso. Copiar y pegar el error de hecho. Gracias :) – Tony

+4

* "Solo puedo suponer que hay algún otro personaje que lo está impidiendo, pero no puedo verlo por mi vida". * 1) Incluya comillas simples alrededor del valor en 'println 'declaración. 2) 'System.out.println (" ¿Cuánto dura esta pieza de String? "+ Length.length());' –

Respuesta

7

Prueba esta variante:

int test= Integer.parseInt(length.trim()); 
+2

Eso lo resolvió, ¡muchas gracias! Supongo que el byte 13 se contó como espacio en blanco por el recorte? – Tony

+0

No estoy seguro. Pero 'trim()' eliminará la mayoría de las cosas en una 'Cadena' que no son visibles. –

3

Puede haber caracteres que no se ven en esta cadena.

Mi idea: utilice una expresión regular con un Patrón/Matcher para eliminar todos los números no numéricos de su cadena, luego analícelos.

+0

Normalmente lo haría. Pero este problema me tiene muy interesado en descubrir por qué el personaje extra, cualquiera que sea, no está apareciendo dentro del Sistema. Salir. – Tony

+1

Podría ser uno de esos caracteres de control no imprimibles que solo puede encontrar emitiendo 'System.out.println (Arrays.toString (length.getBytes()));' – anubhava

+0

[50, 51, 13] - Creo 13 es un retorno de carro? – Tony