2015-06-19 106 views
1

是否有方法比較兩個String的值,如.compareTo但返回的字母數不相同?字符串之間的區別

例子:

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

我無法找到任何東西。我試圖將其轉換爲charArrays並自己寫一個方法,但失敗了。如果這是不可能的,也許有一種方法比較兩個字符串長度相同,返回「錯誤」的數量?

+2

第二個應該是 「2」,是嗎? – markspace

+0

所以你基本上想要[Levenshtein距離](https://en.wikipedia.org/wiki/Levenshtein_distance)?我認爲這不是Java內置的,但實現相對容易,並且有很多示例。 – MikeTheLiar

+0

什麼(例如)'「acda」.anotherCompareTo(「bae」)'是? – Daniel

回答

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 
相關問題