我正在构建一个应该替换默认联系人电话簿的应用程序,我想添加一个搜索栏来搜索联系人的姓名。
现在,我拥有自己的数据库中的所有联系人和TextWatcher,用于跟踪editText中的任何更改 - 然后使用用户输入的char序列构建查询。 这很好用,我得到用户搜索的所有联系人,就像所有联系人以“a”开头一样。 现在我想添加一个新功能来忽略特殊字母,如:á,é,í,ó,ú。
我希望用户可以键入a并仍然获得以á开头的所有联系人 对于e和所有其他字母也一样。
有没有办法在查询本身中执行此操作,或者Java / Android为我们提供了完成此任务的功能。
感谢。
答案 0 :(得分:4)
您可以使用java.text.Normalizer
去除重音。
String strippedAccent = Normalizer.normalize(someText, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
如果你想在查询中使用它,你应该在你的数据库中添加一个字段,其中包含可搜索文本的精简版本。
答案 1 :(得分:0)
This change对于nubdial非常有效。它的速度也相当快。