2つの文字列を比較し、アクセントを無視して「noção」を「nocao」に等しくするメソッドがあるかどうか知りたい。 string1.methodCompareIgnoreAccent(string2);のようになります。
Java Collatorを使用して、アクセントを無視してテストを比較できます。簡単な例を参照してください:
import Java.text.Collator;
/**
* @author Kennedy
*/
public class SimpleTest
{
public static void main(String[] args)
{
String a = "nocao";
String b = "noção";
final Collator instance = Collator.getInstance();
// This strategy mean it'll ignore the accents
instance.setStrength(Collator.NO_DECOMPOSITION);
// Will print 0 because its EQUAL
System.out.println(instance.compare(a, b));
}
}
ドキュメント: JavaDoc
私はほんの少しのCollatorsを使用していて、私はその専門家ではないので、詳細には説明しませんが、それに関するいくつかの記事をググることはできます。
これを行うための組み込みメソッドはないため、独自のメソッドを作成する必要があります。
これの一部は、解決策です here :これは、最初にすべてのアクセント付き文字を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}+", "");
}