Java如何比较字符串,字符串比较问题



我在Java中的字符串比较有问题。我有两个几乎相似的字符串,但它们不相等,因为一个包含-(44(char,另一个包含–(8211(char。有人能帮我解决这个问题吗?这个字符串是相等的。我在代码中尝试过,但不起作用:

cellValue.replaceAll("u0045", "u8211");
byte[] bytes = cellValue.getBytes(Charset.defaultCharset());
String cellValueUtf8 = new String(bytes, Charset.defaultCharset());

Strings是常数;它们的值在创建后不能更改。因此,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);
}

最新更新