Java:使用trim()后获取错误的string.length()
我有字符串Java:使用trim()后获取错误的string.length(),java,string,Java,String,我有字符串“22”,长度是3 我使用了.trim() 还有什么原因会导致这种情况?试试这个: System.out.println(java.util.Arrays.toString(theString.toCharArray())); 这会转储字符串的char[]版本,因此我们可以查看它是否包含任何有趣的内容。您应该给我们演示问题的代码,但我猜您是这样做的: String str = "22 "; str.trim(); System.out.println(str.length());
“22”
,长度是3
我使用了.trim()
还有什么原因会导致这种情况?试试这个:
System.out.println(java.util.Arrays.toString(theString.toCharArray()));
这会转储
字符串的char[]
版本,因此我们可以查看它是否包含任何有趣的内容。您应该给我们演示问题的代码,但我猜您是这样做的:
String str = "22 ";
str.trim();
System.out.println(str.length());
String str = "22 ";
str = str.trim();
System.out.println(str.length());
但是str.trim()
不会改变str
(因为字符串是不可变的)。相反,它返回一个新的字符串。所以你需要这样的东西:
String str = "22 ";
str.trim();
System.out.println(str.length());
String str = "22 ";
str = str.trim();
System.out.println(str.length());
既然我在提出这个问题时找到了理由,我就自己回答
如果字符串是由.substring或split创建的,则保存整个字符串加上子字符串的位置和长度
这显然无法修剪(was“22”)您必须向我们展示您的代码,因为如上所述,这是不可能的。length()
不会返回支持数组的长度,应该可以修剪。看我的答案。5分钟的响应时间?!?!来吧,伙计们,我们可以做得更好…;)+1这是一个很好的诊断工具,即使这次不需要它。它甚至没有相同的问题是OP,但这确实有助于确定字符串使用的是ANSI转义码+1.