字符串之间的区别

时间:2015-06-19 17:40:35

标签: java string

是否有一种比较两个String值的方法,例如.compareTo,但这会返回不相同的字母数?

示例:

"SomeString".anotherCompareTo("SomeStrng") -> 1
"SomeString".anotherCompareTo("SmeStrng") -> 2
"SomeString".anotherCompareTo("SomeStrong") -> 1

我找不到任何东西。我试图将它转换为charArrays并自己编写一个方法但失败了。如果这是不可能的,也许有一种方法可以比较两个具有相同长度的字符串来返回“错误”的数量?

2 个答案:

答案 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