2 つの文字列を比較し、アクセントを無視して「noção」を「nocao」にする方法があるかどうかを知りたいです。string1.methodCompareIgnoreAccent(string2); のようなものになります。
21979 次
2 に答える
7
これを行うためのメソッドは組み込まれていないため、独自に構築する必要があります。
これの一部はここからの解決策です。これは、最初にすべてのアクセント付き文字を対応する deAccented 文字に分割し、続いてそれらを結合する発音区別符号に分割します。次に、結合する分音記号をすべて削除します。https://stackoverflow.com/a/1215117/4095834も参照してください
そして、equals メソッドは次のようになります。
import java.text.Normalizer;
import java.text.Normalizer.Form;
public boolean equals(Object o) {
// Code omitted
if (yourField.equals(removeAccents(anotherField))) {
return true;
}
}
public static String removeAccents(String text) {
return text == null ? null : Normalizer.normalize(text, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
于 2015-03-03T14:48:11.777 に答える