2012-01-16 34 views
6

String dizi öğesinden int ayrıştırmaya çalışıyorum.Java Ayrıntı Denetimi

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

System.out.println izleyerek geri dönmektedir: İşte benim kodudur Uzunluk geçerli: 23

Ancak, ben bir int içine String ayrıştırmak çalıştığınızda, atılan bir java.lang.NumberFormatException; 23 alışkanlık bir int ayrıştırılır da nasıl

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

ben biraz kafam karıştı. İçinde sadece onu engelleyen başka bir karakter olduğunu varsayabilirim, ama bunu benim yaşamım için göremiyorum.

Herhangi bir öneriniz var mı?

Teşekkür

Güncelleme

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

Sana bir sondaki olduğunu fark ilk satırda. Belki geçmiş bir hata mı? –

+0

Ahh evet, bunu görmezden gel. Gerçekten kopyalayıp yapıştırın. Teşekkürler :) – Tony

+4

* "Sadece orada önleyen başka bir karakter olduğunu varsayabilirim, ama benim için hayattayken göremiyorum." * 1) println değerinin etrafında tek tırnak içine alın ifade. 2) 'System.out.println (" Bu String dizisi ne kadardır? "+ Length.length());' –

cevap

7

Bu varyantı deneyin: ""

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

Bu onu ayırdı, çok teşekkürler! Bayt 13, trim tarafından beyaz boşluk olarak kabul edildi mi? – Tony

+0

Emin değilim. Fakat 'trim() ', görünür olmayan bir' String'deki birçok şeyden kurtulacaktır. –

3

bu dizede görünmeyen karakterler olabilir.

Fikrim: dizinizdeki tüm sayısal olmayanları kaldırmak için bir Düzen/Eşleştirici ile düzenli ifadeler kullanın ve ardından onu ayrıştırın.

+0

Normalde yapardım. Ancak bu problem, System.Out içinde neden ekstra karakterin bulunup bulunmadığını bulmak için beni çok ilgilendirdi. – Tony

+1

Sadece System.out.println (Arrays.toString (length.getBytes())); ' – anubhava

+0

[50, 51, 13] yayınlayarak bulabileceğiniz, yazdırılamayan bu kontrol karakterlerinden biri olabilir. 13 bir vagon dönüş mü? – Tony

İlgili konular