首页 > 解决方案 > Java如何比较字符串,字符串比较问题

问题描述

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

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

标签: javastring

解决方案


Strings 是常数;它们的值在创建后无法更改。因此,String#replaceAll返回一个新的,String即这个操作不会改变cellValue。另外,请注意String#replaceAll将正则表达式作为第一个参数。

您需要String#replace, 它将给定字符串中所有出现的, 替换为, 而不是.oldCharnewCharString#replaceAll

代替

cellValue.replaceAll("\u0045", "\u8211");

cellValue = cellValue.replace('\u0045', '\u8211');

为了将更改后的值分配给cellValue.


推荐阅读