我有这个代码搜索字符串数组,如果输入字符串匹配字符串的第1个字符,则返回结果:
for (int i = 0; i < countryCode.length; i++) {
if (textlength <= countryCode[i].length()) {
if (etsearch
.getText()
.toString()
.equalsIgnoreCase(
(String) countryCode[i].subSequence(0,
textlength))) {
text_sort.add(countryCode[i]);
image_sort.add(flag[i]);
condition_sort.add(condition[i]);
}
}
}
但是我想获得那些字符串,输入字符串不仅匹配在第一个字符中,而且还匹配字符串中的任何位置?怎么做?
答案 0 :(得分:25)
有三种方法可以搜索字符串是否包含子字符串:
String string = "Test, I am Adam";
// Anywhere in string
b = string.indexOf("I am") > 0; // true if contains
// Anywhere in string
b = string.matches("(?i).*i am.*"); // true if contains but ignore case
// Anywhere in string
b = string.contains("AA") ; // true if contains but ignore case
答案 1 :(得分:7)
我没有足够的声望点&#39;在评论中回复,但接受的答案中有错误。 indexOf()在找不到子字符串时返回-1,因此它应该是:
b = string.indexOf("I am") >= 0;
答案 2 :(得分:3)
答案 3 :(得分:0)
试试这个 -
etsearch.getText().toString().contains((String) countryCode[i]);
答案 4 :(得分:0)
您可以使用包含。如:
myString.contains("xxx");
另请参阅:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html,特别是包含区域。
答案 5 :(得分:0)
使用以下内容:
public boolean contains (CharSequence cs)
自:API Level 1
确定此String是否包含传递的CharSequence中的字符序列。
Parameters
cs
要搜索的字符序列。
Returns
true 如果此字符串中包含字符序列,否则 false
答案 6 :(得分:0)
实际上,Android中的默认Arrayadapter类似乎只从整个单词的开头开始搜索,但是通过使用自定义Arrayadapter类,您可以搜索任意字符串的一部分。我创建了整个自定义类并发布了库。这是非常容易使用。您可以从here或单击下面提供的链接来检查实施和使用情况。
https://github.com/mohitjha727/Advanced-Search-Filter
您可以参考这个简单的示例- 我们有“ Mohit”和“ Rohan”这两个名字,如果仅输入“ M”,则Mohit出现在搜索结果中,但是当我们输入“ oh”时,Mohit和Rohan都显示为通用字母“ oh”。
谢谢。