我有一个包含哈希的字符串(它是由第三方程序自动生成的),我有另一个不包含哈希的字符串,我需要与第一个字符串进行比较。
方法.equals()
给出错误。
我怎么能比较它们呢?
答案 0 :(得分:2)
如果方法==
和.equals()
给出false
,则String
引用都不指向堆中的相同对象和有意义的等效对象。除此之外,==
不应用于比较String
文字
答案 1 :(得分:0)
使用equals(String anotherString)
比较字符串值。如果该方法返回false,则字符串值不相等。
检查字符串是否有大写与小写,前导和尾随空格等等。
答案 2 :(得分:0)
如果我理解正确,有两个要比较的字符串,一个是原始字符串(s1),第二个字符串包含第三方程序插入的原始字符串+其散列(s2)。如果是这样,内置的equals()方法将不返回true。我将创建自己的equals()方法实现来检查它。
这两种方法应该可以解决问题,但我更喜欢第二种方法。
private static boolean equals(String s1, String s2) {
String s1Hash = String.valueOf(s1.hashCode());
return (s2.contains(s1) && s2.contains(s1Hash));
}
private static boolean equals2(String s1, String s2) {
String s1Hash = String.valueOf(s1.hashCode());
String s2NoHash = s2.replace(s1Hash,"");
return (s1.equals(s2NoHash));
}
希望这能满足您的需求。否则,描述问题的具体例子将是好的。