Запрос в комнате SQLite (нечувствительный корпус) игнорирование акцентовAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Запрос в комнате SQLite (нечувствительный корпус) игнорирование акцентов

Сообщение Anonymous »

В части моего приложения Android вы можете искать людей по имени. Но мне нужно, что даже если имя или фамилия написаны неправильно (например, без акцента) результат отображается: < /p>
Пример: < /p>
в базе данных: Pérez Juan, Cooper Sheldon, Pérez Adrian < /p>
search: perez < /pérez adrian < /p>

perez < /pérez Adrian < /p>
search: perez < /pérez adrian < /p>
search: perez < /pérez adrian < /p>
Pérez Adrian (из базы данных)
Я выполнял запрос, используя, и он работает, охватывая нечувствительный корпус, но он не работает для акцентов, потому что мне нужно написать букву точно одинаково (с или без акцента), вот мой рабочий код:
, поэтому я получаю вариабельную), вот мой рабочий код> ​​
, так что я получаю вариабель)

, поэтому я получаю вариабель)
, поэтому я получаю вариабель)
, поэтому я получаю вариабель).

Код: Выделить всё

String name = searchEditText.getText().toString();
if (!name.equals("")){
name = "%" + name + "%";
}
persondao [/b]

Код: Выделить всё

@Query("SELECT *, lastName || ' ' || name AS FullName\n" +
"FROM Person\n" +
"WHERE FullName LIKE :fn\n" +
"ORDER BY FullName")
LiveData searchPerson(String fn);
Possible solution found on StackOverflow

To solve the problem of the accents I found this answer that I am trying to implement without success
So I get the variable used in searchPerson

Код: Выделить всё

String name = searchEditText.getText().toString();
name = addTildeOptions(name);
function function

Код: Выделить всё

private String addTildeOptions(String searchText) {
return searchText.toLowerCase()
.replaceAll("\\[aáàäâã]\\.*", "[aáàäâã]")
.replaceAll("\\[eéèëê]\\.*", "[eéèëê]")
.replaceAll("\\[iíìî]\\.*", "[iíìî]")
.replaceAll("\\[oóòöôõ]\\.*", "[oóòöôõ]")
.replaceAll("\\[uúùüû]\\.*", "[uúùüû]")
.replace("*", "[*]")
.replace("?", "[?]");
}
persondao

Код: Выделить всё

@Query("SELECT *, lastName || ' ' || name AS FullName\n" +
"FROM Person\n" +
"WHERE lower(FullName) GLOB :fn\n" +
"ORDER BY FullName")
LiveData searchPerson(String fn);
Однако это не возвращает каких-либо результатов, даже если я набираю одну букву, она никогда не показывает ничего. /> Что не так в моем коде? < /p>

Подробнее здесь: https://stackoverflow.com/questions/715 ... ng-accents
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»