我在Java中进行字符串比较时遇到问题。我有2个几乎相似的字符串,但是它们不相等,因为一个包含-(44)char,另一个包含-(8211)char。有人可以帮我解决这个字符串是否相等的问题。我在代码中尝试过此方法,但没有用:
cellValue.replaceAll("\u0045", "\u8211");
byte[] bytes = cellValue.getBytes(Charset.defaultCharset());
String cellValueUtf8 = new String(bytes, Charset.defaultCharset());
答案 0 :(得分:0)
String
是常数;它们的值在创建后无法更改。因此,String#replaceAll
返回一个新的String
,即此操作不会更改cellValue
。另外,请注意,String#replaceAll
将一个正则表达式作为第一个参数。
您需要String#replace
,它用oldChar
而不是newChar
替换给定字符串中String#replaceAll
的所有出现的。 >
替换
cellValue.replaceAll("\u0045", "\u8211");
使用
cellValue = cellValue.replace('\u0045', '\u8211');
以便将更改后的值分配给cellValue
。
答案 1 :(得分:-1)
我编写了此方法,它按我的预期工作:
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);
}