Статическая проверка орфографии

Я пытаюсь реализовать поведение, подобное проверке орфографии, но не совсем то же самое. Под статичностью я подразумеваю только определенные слова.

Допустим, у меня есть массив из 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();
}
Другие вопросы по тегам