[我正在尝试检查诸如“自制披萨!”之类的短语。包含“ pizza”之类的字符串,但我希望它始终为真,不管是Pizza,Pizza还是Pizza!或披萨!
我将解释代码:
recipesFounded
是一个包含标题,描述等的数组。这就是为什么我放入recipesFounded.get(i).getTitle()
。
问题是我有“自制披萨!”字符串,所以如果我搜索“ Pizza!”很好,因为该食谱已添加到trueOnes
新食谱列表中,但是如果我搜索披萨(没有Mayus P和!),则不会。
单词是我要搜索的字符串(披萨,比萨!...]
for (int i=0; i < recipesFounded.size(); i++) {
if (recipesFounded.get(i).getTitle().contains(word)) {
trueOnes.add(recipesFounded.get(i));
}
}
使用toLowerCase
的String
方法>
建议,在循环之前将单词转换为小写。效率更高。word = word.replaceAll("[^a-zA-Z]","").toLowerCase(); // keep only letters
每个Andreas
的类for (int i=0; i < recipesFounded.size(); i++) { if (recipesFounded.get(i).getTitle().toLowerCase() .contains(word)) { trueOnes.add(recipesFounded.get(i)); } }
由于
List
实现了iterable
接口,因此您可以这样做。假定您正在使用一个名为Recipe
for (Recipe recipe : recipesFounded) {
if (recipe.getTitle().toLowerCase()
.contains(word)) {
trueOnes.add(recipe);
}
}
为了以给定的顺序搜索字母/数字,而忽略大小写,空格和特殊字符,最好将搜索字符串转换为正则表达式