Java String.contains() 无法正常工作

Java String.contains() not working properly

我正在我的应用程序中使用主题标签进行搜索。这个想法是程序将循环我的数据库中所有现有的 posts 并检查是否是 currentPost 中的所有输入主题标签,然后它将 post 添加到 recyclerView

出于某种原因,string.contains 无法正常工作,例如我搜索“brasil historia”并且有两个主题标签,但函数 return 为 false

这是我正在使用的方法:

private boolean checkTagsSearch(List<String> tags, String searchString, String query) {

        String[] searchHashtagsList = query.split(" ");
        int numberOfSearchedTags = searchHashtagsList.length;
        int counter=0;
        // if there is the search string in the tags
        // se o post tiver a search string
        for(String currentTag : tags){
            Log.i("checkTags", "search: " + searchString + " currentTag: " + currentTag+ " counter: "+counter);
            Log.i("checkTags", "search string contains? " + searchString.contains(currentTag));

            if (searchString.contains(currentTag)) {
                counter++;

                if(counter == numberOfSearchedTags) {
                    return true;
                }
            }
        }

        return false;

    }

这是我为 Log.i 得到的日志:

正如您在此处看到的,搜索字符串是“brasilhistoria”,它搜索了 brasil 和 historia,但包含的内容是错误的

2021-02-07 08:28:18.115 22455-22455/com.I/checkTags: search: brasilhistoria currentTag: brasil  counter: 0
2021-02-07 08:28:18.115 22455-22455/com.I/checkTags: search string contaiins? false
2021-02-07 08:28:18.115 22455-22455/com.I/checkTags: search: brasilhistoria currentTag: imperio  counter: 0
2021-02-07 08:28:18.115 22455-22455/com.I/checkTags: search string contaiins? false
2021-02-07 08:28:18.116 22455-22455/com.I/checkTags: search: brasilhistoria currentTag: primeiroreinado  counter: 0
2021-02-07 08:28:18.116 22455-22455/com.I/checkTags: search string contaiins? false
2021-02-07 08:28:18.116 22455-22455/com.I/checkTags: search: brasilhistoria currentTag: historia  counter: 0
2021-02-07 08:28:18.116 22455-22455/com.I/checkTags: search string contaiins? false

您的标签中有尾随空格。请参阅 search: brasilhistoria currentTag: brasil counter: 0brasilcounter 之间的双空格!这意味着 currentTag 在那种情况下不是 brasilbrasil 并且 brasil 不包含在 brasilhistoria.

解决方案:trim 标签在某些时候删除尾随空格。

您在 currentTag 之后有 space 然后调用例如:

"brasilhistoria".contains("brasil ");

答案是错误的