2017-09-01 2 views
0

J'essaie d'implémenter un comportement similaire à la vérification orthographique, mais pas exactement la même chose. Par statique, je veux dire seulement sur certains mots. Donc, disons que j'ai un tableau de 10 chaînes.Comportement de vérification orthographique statique

String[] originalWords = new String[] { 
     "Apple", "Banana", "Orange", "Pear", "Grape", 
     "Pineapple", "Lemon", "Mango", "Cherry", "Peach" 
}; 

Maintenant, j'ai un EditText où l'utilisateur peut taper quelque chose. Après l'utilisateur a terminé de taper (ils presse suivant, etc.), je veux effectuer un contrôle sur ce qu'ils tapés.

String userInput = String.valueOf(editText.getText()).trim(); 

Disons que userInput valeur est appla. Cela signifie que l'utilisateur tapé est seulement une lettre du monde Apple (qui est dans le tableau).

C'est le chèque que je veux implémenter. Quel que soit le type d'utilisateur, s'il existe un mot SIMILAIRE (1 ou 2 lettres) dans le tableau, je veux obtenir ce mot. Comment pourrais-je procéder à cela?

Exemples de résultat:

aoole ==> Apple 
orenge ==> Orange 
Cheery ==> Cherry 
+1

qui nécessite un algorithme pour trouver le pourcentage de similarité de la chaîne .. essayer de googler 'java comparer chaîne similitude' – ZeroOne

Répondre

0

j'ai pu comprendre. Ca ne va pas exactement comme je le voulais (1 ou 2 lettres de moins) mais ça fait le boulot car ça donne le pourcentage de similitude.

J'ai utilisé la bibliothèque this.

// 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(); 
}