【发布时间】:2015-02-03 09:26:57
【问题描述】:
我在比较两个字符串时遇到问题。它总是导致错误。我认为空间的 unicode 存在问题。
String actual = "cars in";
String expected = "cars in";
for(int i=0;i<expected.length();i++){
System.out.print(expected.codePointAt(i)+" ");
System.out.print(actual.codePointAt(i)+" ");
System.out.println();
}
if(actual.equals(expected)){
System.out.println(true);
}else
System.out.println(false);
我也尝试打印 codePoint,结果如下。
99 99
97 97
114 114
115 115
32 160
105 105
110 110
所以空间的值不同,在第一个字符串中,值为32,在第二个字符串中,值为160,因此每次比较两者时它都会给出错误。
我该如何解决这个问题?
【问题讨论】:
-
'160' 是一个不间断空格,而 32 只是一个空格 en.wikipedia.org/wiki/Non-breaking_space
-
那么如何比较我得到真实结果的字符串。
-
您可以使用
String replace()将不间断空格转换为普通空格 -
谢谢@DmitryBychenko,我明白了! :)