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

时间:2020-10-22 16:02:09

标签: java string

我在Java中进行字符串比较时遇到问题。我有2个几乎相似的字符串,但是它们不相等,因为一个包含-(44)char,另一个包含-(8211)char。有人可以帮我解决这个字符串是否相等的问题。我在代码中尝试过此方法,但没有用:

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

2 个答案:

答案 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);
}
相关问题