时间:2011-06-16 16:08:47

标签: java string

我有两个“相等”的字符串。当我打印两个字符串时,它们在屏幕上看起来完全相同。但是当我比较Strings时结果为“false”并在两个Strings中使用.length时,第一个String的结果为174,第二个String的结果为171。我删除了所有空格和所有内容以将字符串设置为一行。

String 1:
<docxmlns="http://example.com/default"xmlns:x="http://example.com/x"><aa1="1"a2="2">123</a><bxmlns:y="http://example.com/y"a3="&quot;3&quot;"y:a1="1"y:a2="2">cdf</b></doc>

String 2:
<docxmlns="http://example.com/default"xmlns:x="http://example.com/x"><aa1="1"a2="2">123</a><bxmlns:y="http://example.com/y"a3="&quot;3&quot;"y:a1="1"y:a2="2">cdf</b></doc>

String 1 length: 174
String 2 length: 171

我从Netbeans控制台复制了两个字符串,因为你可以看到它们是相同的,但它们有不同的长度。

感谢。

5 个答案:

答案 0 :(得分:3)

当你在java程序中读取它时,字符串可能包含换行符(Windows中为"\n\r"),这可能会改变两个字符串的长度和相等性。

答案 1 :(得分:2)

在两个字符串上调用getBytes()并打印结果。我打赌你有编码差异。

答案 2 :(得分:2)

尝试将它们打印为字符:

System.out.println( Arrays.toString( yourString.toCharArray() );

这应该可以让你看到不可打印的字符(或任何不同的字符)的位置,因为“abc”的输出将是“[a,b,c]”。

答案 3 :(得分:0)

  

我删除了所有空格以及将字符串设置为一行的所有内容。

空白区域非常重要,可能是您平等问题的决定因素。作为测试它是否,从两个字符串中剥离空白区域然后执行等于检查。

答案 4 :(得分:0)

你切了吗?粘贴来自外部源(如PDF)的字符串? 几年前我遇到了类似的问题,我发现从PDF复制的字符串有时会包含一些不可见的字符(我使用的是Acrobat Reader)。