2012-01-16 13 views
6

Próbuję parsować int z elementu tablicy String. Tu jest mój kodu:Java ParseInt Sanity Check

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

System.out.println zwraca następujący: Długość: 23

Jednak gdy próbuję analizować String się z int, A java.lang.NumberFormatException zostaje wrzucony;

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

jestem trochę zdezorientowany jak 23 przyzwyczajenie analizowany pod z int. Mogę tylko założyć, że jest tam jakaś inna postać, która temu zapobiega, ale nie widzę tego dla mojego życia.

Wszelkie sugestie?

Dzięki

Aktualizacja

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

Zauważyłem, że masz końcowego znaku w pierwszej linii. Być może błąd kopiowania z przeszłości? –

+0

Ahh tak, zignoruj ​​to. Skopiuj i wklej błąd. Dzięki :) – Tony

+4

* "Mogę tylko założyć, że jest tam jakaś inna postać, która temu zapobiega, ale nie widzę tego dla mojego życia." * 1) Załącz pojedyncze cytaty wokół wartości w 'println 'instrukcja. 2) 'System.out.println (" Jak długi jest ten fragment String? "+ Length.length());' –

Odpowiedz

7

Spróbuj wariant: "".

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

To posortowałem to, bardzo dziękuję! Przypuszczam, że bajt 13 został policzony jako spacja przez przycięcie? – Tony

+0

Nie jestem pewien. Ale "trim()" pozbędzie się większości rzeczy w "String", które nie są widoczne. –

3

Może być niewidoczne znaki w tym ciągu.

Mój pomysł: użyj wyrażeń regularnych z wzorcem/Matcherem, aby usunąć wszystkie nielumeralne ciągi, a następnie przeanalizuj je.

+0

Zwykle chciałbym. Ale ten problem bardzo mnie zainteresował, aby dowiedzieć się, dlaczego dodatkowa postać, cokolwiek by to nie było, nie pojawia się w System.Out. – Tony

+1

Może to być jeden z tych niedrukowalnych znaków kontrolnych, które można znaleźć tylko po wydaniu 'System.out.println (Arrays.toString (length.getBytes()));' – anubhava

+0

[50, 51, 13] - Myślę, że 13 to powrót karetki? – Tony