是否有一种比较两个String
值的方法,例如.compareTo
,但这会返回不相同的字母数?
示例:
"SomeString".anotherCompareTo("SomeStrng") -> 1
"SomeString".anotherCompareTo("SmeStrng") -> 2
"SomeString".anotherCompareTo("SomeStrong") -> 1
我找不到任何东西。我试图将它转换为charArrays并自己编写一个方法但失败了。如果这是不可能的,也许有一种方法可以比较两个具有相同长度的字符串来返回“错误”的数量?
答案 0 :(得分:5)
Apache Commons有一种方法来区分字符串
StringUtils.difference(String str1, String str2)
您可以使用它来创建一个非常容易返回差异数量的方法。
修改强>:
事实上它已经存在:
StringUtils.getLevenshteinDistance(String str1, String str2)
答案 1 :(得分:1)
Java的String.replaceAll()
似乎做了你想要的。第一个参数是正则表达式模式,所以你要求用空字符串替换模式中的所有字符,留下与模式不匹配的字符。
public static void main(String[] args) {
String s1 = "SomeString";
String s2 = "SomeStrng";
String s3 = "SmeStrng";
String s4 = "SomeStrong";
String result = s1.replaceAll("[" + s2 + "]", "");
System.out.println(result + ": " + result.length());
result = s1.replaceAll("[" + s3 + "]", "");
System.out.println(result + ": " + result.length());
result = s1.replaceAll("[" + s4 + "]", "");
System.out.println(result + ": " + result.length());
}
结果:
i: 1
oi: 2
i: 1