我正在尝试消除搜索者单词的重音,但是我的代码无法正常工作。
我希望您查找示例单词Você
Voce, Você, voce, você, VOCE, VOCÊ
的所有变体形式。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.busca, menu);
MenuItem menuItem = menu.findItem(R.id.sv);
SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//Irá tirar não só acentuações mas também qualquer caractere fora de ASCII
String texto;
texto = Normalizer.normalize(query, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");
//seu código
return false;
}
//se for pra passar o texto já modificado para o arrayAdapter, vc faz:
@Override
public boolean onQueryTextChange(String newText) {
String texto;
texto = Normalizer.normalize(newText, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");
arrayAdapter.getFilter().filter(texto);
return true;
}
});
getMenuInflater().inflate(R.menu.activity_main, menu);
return super.onCreateOptionsMenu(menu);
}
答案 0 :(得分:0)
如您在此处(Remove diacritical marks (ń ǹ ň ñ ṅ ņ ṇ ṋ ṉ ̈ ɲ ƞ ᶇ ɳ ȵ) from Unicode chars所见),可以使用java.text包来执行此操作。您首先要删除双引号,然后转换为ascii。非ASCII字符将成为问号。