如何避免案件不同的字母(A,E,I,O,U)的搜索模式 - 安卓(How to avoid diff

2019-11-01 11:08发布

我建立一个应用程序,应更换默认的电话本,我想添加一个搜索栏,搜索联系人的姓名。

现在我在我自己的数据库中的所有联系人和持续追踪的EDITTEXT任何变化TextWatcher - 然后建立与用户输入的字符序列的查询。 这是工作得很好,我越来越喜欢所有联系人的用户搜索与“A”开头的所有联系人。 现在,我想添加一个新功能,忽略特殊字母,如:A,E,I,O,U。

我想的是,用户可以键入一个,仍然可以得到以A为电子同和所有其他字母开头的所有联系人。

有没有办法在查询本身或存在是Java / Android的给我们说做到的东西做到这一点。

谢谢。

Answer 1:

您可以使用java.text.Normalizer剥离口音。

String strippedAccent = Normalizer.normalize(someText, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

F你想在一个查询中使用它,你应该添加一个字段到包含搜索文本的简装版本的数据库。



Answer 2:

这种变化的工作是相当不错的nubdial。 这是相当快的,太。



文章来源: How to avoid different letters cases (á, é, í, ó, ú) in search mode - Android