我试图实现类似于拼写检查的行为,但不完全相同。静态,我只是指某些词。
所以,假设我有一个包含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
(在数组中)。
这是我要实施的检查。无论用户输入什么,如果数组中存在一个SIMILAR(1或2个字母关闭)字,我想得到那个字。我该如何实施呢?
结果示例:
aoole ==> Apple
orenge ==> Orange
Cheery ==> Cherry
我能够弄清楚这一点。它并没有完全按照我想要的方式(1或2个字母关闭),但它完成了工作,因为它给出了相似性的百分比。
我用过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();
}