我在Java中的字符串比较有问题。我有两个几乎相似的字符串,但它们不相等,因为一个包含-(44(char,另一个包含–(8211(char。有人能帮我解决这个问题吗?这个字符串是相等的。我在代码中尝试过,但不起作用:
cellValue.replaceAll("u0045", "u8211");
byte[] bytes = cellValue.getBytes(Charset.defaultCharset());
String cellValueUtf8 = new String(bytes, Charset.defaultCharset());
String
s是常数;它们的值在创建后不能更改。因此,String#replaceAll
返回一个新的String
,即该操作不改变cellValue
。另外,请注意,String#replaceAll
将正则表达式作为第一个参数。
您需要String#replace
,它将给定字符串中所有出现的oldChar
替换为newChar
,而不是String#replaceAll
。
更换
cellValue.replaceAll("u0045", "u8211");
带有
cellValue = cellValue.replace('u0045', 'u8211');
以便将改变后的值分配给CCD_ 10。
我写了这个方法,它正如我所期望的那样工作:
public static String normalizeDashChar(String toNormalize) {
char[] bytes = toNormalize.toCharArray();
for(int i = 0; i < bytes.length; i++) {
if(bytes[i] == (char)45) {
bytes[i] = (char)8211;
}
}
return new String(bytes);
}