2012-10-28 123 views
2

寬鬆的字符串比較我想比較(不區分大小寫)兩個字符串忽略像點,逗號或其他符號(如西班牙語或法語字母ó ü ê等)標點符號在Java中

一些例子標點符號:

Hello == Helló 
    Hello, Sam == Hello sam 
    geo-code == geocode == geo code 

(不需要覆蓋所有的選項)

最新最好的溶液(外部庫,方法等)

回答

5

ř排除所有特殊字符。

geo-code刪除-它變成geocode。同樣,刪除空間從geo code

Hello, sam刪除空格和逗號後變成Hellosam然後你可以比較這些字符串。 Here's how you can do that.

現在對特殊字符,例如法國的:This will help you.

這裏的code found in another thread。我沒有測試過它。

import java.text.Normalizer; 
import java.util.regex.Pattern; 

public String deAccent(String str) { 
    String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD); 
    Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); 
    return pattern.matcher(nfdNormalizedString).replaceAll(""); 
}