如何在整个字符串中搜索特定单词?

时间:2012-05-24 15:23:11

标签: java android

我有这个代码搜索字符串数组,如果输入字符串匹配字符串的第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]);
                }
            }
        }

但是我想获得那些字符串,输入字符串不仅匹配在第一个字符中,而且还匹配字符串中的任何位置?怎么做?

7 个答案:

答案 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”。

谢谢。