2010-05-30 5 views

Antwort

27

Sie sollten uns Code sein zu geben, die das Problem veranschaulicht, aber meine Vermutung ist, dass Sie so etwas wie dies tat:

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

Aber str.trim() nicht str ändern (wie Strings unveränderlich sind). Stattdessen gibt es eine neue getrimmte Zeichenfolge zurück. Sie müssen also so etwas wie dieses:

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

yup das ist es, wow ihr seid schnell O_o – Jan

+7

5 Minuten Reaktionszeit?!?! Komm schon Jungs, wir können es besser machen ...;) –

11

Try this:

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

Diese die char[] Version des String Dumps, so können wir vielleicht sehen, ob es etwas komisch enthält.

+5

+1 Es ist ein gutes Diagnosewerkzeug, auch wenn es dieses Mal nicht benötigt wurde. –

+0

hatte nicht einmal das gleiche Problem ist OP, aber das half wirklich herauszufinden, dass die Zeichenfolge ANSI-Escape-Codes verwendet. +1 –

-2

da ich einen Grund gefunden, während die Frage zu formulieren, im gonna selbst beantworten ..

Wenn die Zeichenfolge von .substring oder Split erstellt wurde, die gesamte Zeichenkette gespeichert wird plus die Position und Länge der Teilkette.

dies offenbar getrimmt werden kann nicht (war „22“)

+3

'length()' gibt nicht die Länge des Hintergrund-Arrays zurück, und es sollte getrimmt werden können. Siehe meine Antwort. –

+0

falsch, es kann, siehe Antwort oben – Jan

Verwandte Themen