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: 0
中 brasil
和 counter
之间的双空格!这意味着 currentTag
在那种情况下不是 brasil
但 brasil
并且 brasil
不包含在 brasilhistoria
.
中
解决方案:trim
标签在某些时候删除尾随空格。
您在 currentTag
之后有 space 然后调用例如:
"brasilhistoria".contains("brasil ");
答案是错误的
我正在我的应用程序中使用主题标签进行搜索。这个想法是程序将循环我的数据库中所有现有的 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: 0
中 brasil
和 counter
之间的双空格!这意味着 currentTag
在那种情况下不是 brasil
但 brasil
并且 brasil
不包含在 brasilhistoria
.
解决方案:trim
标签在某些时候删除尾随空格。
您在 currentTag
之后有 space 然后调用例如:
"brasilhistoria".contains("brasil ");
答案是错误的