这是我想要实现的功能:搜索结果必须包含搜索键,即使两者之间缺少一些字母。因此,例如,如果用户想要搜索noodles
并意外拼错它并在nooles
中输入,则仍然会弹出正确的搜索结果。以下是其他一些例子:
我想我需要将搜索键分解为两半的组合。然后显示包含键的两半的结果。有人做过这样的事吗?如果我把它分成三个或四个部分怎么办?如果我将其分解为单字符字符串并且唯一的要求是结果包含搜索键包含的所有字母该怎么办?
答案 0 :(得分:1)
我没有对此进行足够的测试,但我只是写了这个并且似乎有效。请提供其他答案,使用另一种方法!
// returns true if a result string contains key
// (or any combination of its letters in order)
private boolean contains(String result, String key) {
// make both strings lowercase and remove spaces
result = result.toLowerCase().replace(" ", "");
key = key.toLowerCase().replace(" ", "");
// use a char array
char[] letters = key.toCharArray();
// loop through it
for (char c : letters) {
if (!result.contains(c + "")) {
return false; // stop searching if can't find at least one char
}
// remove the first part of the string, so that we're searching for
// letters that exist in a string in order they appear in the key.
result = result.substring(result.indexOf(c));
}
return true;
}