检查子字符串是否在忽略大写,小写和特殊字符的字符串中?

问题描述 投票:0回答:2

[我正在尝试检查诸如“自制披萨!”之类的短语。包含“ 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));
    }
}
java string substring contains
2个回答
2
投票

使用toLowerCaseString方法>


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

0
投票

为了以给定的顺序搜索字母/数字,而忽略大小写,空格和特殊字符,最好将搜索字符串转换为正则表达式

© www.soinside.com 2019 - 2024. All rights reserved.