如何在搜索模式中避免使用不同的字母案例(á,é,í,ó,ú) - Android

时间:2013-01-23 13:43:57

标签: android sqlite searchbar

我正在构建一个应该替换默认联系人电话簿的应用程序,我想添加一个搜索栏来搜索联系人的姓名。

现在,我拥有自己的数据库中的所有联系人和TextWatcher,用于跟踪editText中的任何更改 - 然后使用用户输入的char序列构建查询。 这很好用,我得到用户搜索的所有联系人,就像所有联系人以“a”开头一样。 现在我想添加一个新功能来忽略特殊字母,如:á,é,í,ó,ú。

我希望用户可以键入a并仍然获得以á开头的所有联系人 对于e和所有其他字母也一样。

有没有办法在查询本身中执行此操作,或者Java / Android为我们提供了完成此任务的功能。

感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用java.text.Normalizer去除重音。

String strippedAccent = Normalizer.normalize(someText, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
如果你想在查询中使用它,你应该在你的数据库中添加一个字段,其中包含可搜索文本的精简版本。

答案 1 :(得分:0)

This change对于nubdial非常有效。它的速度也相当快。