字符串明明相等 但是equals不相等
笔者遇到的情况是 有以下字符串
String a= “54 06 05 00 FF FB 8B 0F” String b= “54 06 05 00 FF FB 8B 0F”
a.euqals(b) 结果是false
于是通过toCharArray()方法 挨个打印字符并转成ascii码 发现a 中的空格字符的ascii 是160 而 b 是32
发现 有个空格叫不间断空格 就是网页上的&npsb ,而32 是普通空格。网上的正则过滤没有用 于是自己写了个比较
char[] expectedSerialChars = expectedSerial.toCharArray();
char[] serverSerialChars = serverSerial.toCharArray();
if(expectedSerialChars.length!=serverSerialChars.length){
return false;
}else {
for (int i = 0; i <expectedSerialChars.length ; i++) {
if((int)expectedSerialChars[i]==160||(int)expectedSerialChars[i]==32){
if((int)serverSerialChars[i]!=160&&(int)serverSerialChars[i]!=32){
return false;
}
}else {
if((int)expectedSerialChars[i]!=(int)serverSerialChars[i]){
return false;
}
}
}
return true;
}