Статическая проверка орфографии
Я пытаюсь реализовать поведение, подобное проверке орфографии, но не совсем то же самое. Под статичностью я подразумеваю только определенные слова.
Допустим, у меня есть массив из 10 строк.
String[] originalWords = new String[] {
"Apple", "Banana", "Orange", "Pear", "Grape",
"Pineapple", "Lemon", "Mango", "Cherry", "Peach"
};
Теперь у меня есть EditText
где пользователь может ввести что-то. После того, как пользователь заканчивает вводить текст (он нажимает "Далее" и т. Д.), Я хочу проверить, что он набрал.
String userInput = String.valueOf(editText.getText()).trim();
Скажем userInput
значение appla
, Это означает, что пользователь набрал всего одну букву в мире Apple
(который находится в массиве).
Это проверка, которую я хочу реализовать. Что бы ни вводил пользователь, если в массиве есть одно ПОХОЖОЕ (от 1 до 2 букв), я хочу получить это слово. Как бы я мог реализовать это?
Примеры результатов:
aoole ==> Apple
orenge ==> Orange
Cheery ==> Cherry
1 ответ
Я смог понять это. Он идет не совсем так, как я хотел (1 или 2 буквы), но он выполняет свою работу, потому что дает процент сходства.
Я использовал эту библиотеку.
// array of original words to compare against
String[] originalWords = new String[] {
"Apple", "Banana", "Orange", "Pear", "Grape",
"Pineapple", "Lemon", "Mango", "Cherry", "Peach"
};
// convert String array to ArrayList
ArrayList<String> originals = (ArrayList<String>) Arrays.asList(originalWords);
ExtractedResult extractedResult = FuzzySearch.extractOne("aoole", originals);
if(extractedResult.getScore() >= 75) {
// the word provided (aoole) is at least 75% similar to one of the original words.
// To get the original word:
String result = extractedResult.getString();
}