Dav*_*ton 32 java string localization diacritics filter
我正在尝试为我的应用程序编写一个过滤器函数,该函数将采用输入字符串并以某种方式过滤掉与给定输入不匹配的所有对象.最简单的方法是使用String的contains方法,即只检查对象(对象中的String变量)是否包含过滤器中指定的字符串,但这不会考虑重音.
有问题的对象基本上是Persons,我想要匹配的字符串是名称.因此,例如,如果有人搜索Joao,我会期望Joáo被包含在结果集中.我已经在我的应用程序中使用了Collator类来按名称排序,它运行良好,因为它可以进行比较,即使用英国语言环境á来自b之前但是之后.但是,如果你比较a和á因为它们不相等,它显然不会返回0.
那么有谁知道我怎么能这样做?
Bal*_*usC 83
利用java.text.Normalizer
和拍摄正则表达式来摆脱变音符号.
public static String removeDiacriticalMarks(String string) {
return Normalizer.normalize(string, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
Run Code Online (Sandbox Code Playgroud)
你可以使用如下:
String value = "Joáo";
String comparisonMaterial = removeDiacriticalMarks(value); // Joao
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14775 次 |
最近记录: |