Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:使用trim()后获取错误的string.length()_Java_String - Fatal编程技术网

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.