【问题标题】:How to search the whole string for a specific word?如何在整个字符串中搜索特定单词?
【发布时间】:2020-07-29 21:32:16
【问题描述】:

我有这段代码,它搜索一个字符串数组,如果输入字符串与字符串的第一个字符匹配,则返回结果:

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

但我还想在输入字符串不仅在第一个字符中匹配而且在字符串中的任何位置匹配的地方也获取那些字符串?如何做到这一点?

【问题讨论】:

  • String 有一个 contains() 方法 - 你可以使用它。
  • String.indexOf() 在android中可用吗?
  • 包含,indexOf() 没有什么对我有用:(
  • 您可以通过 java 模式匹配器方法轻松实现此目标。请查看此链接中给出的示例 docs.oracle.com/javase/tutorial/essential/regex/matcher.html 祝您好运,如果您发现任何问题,请不要问我,问候 Aamirkhan I。跨度>

标签: java android


【解决方案1】:

您可以通过三种方式搜索字符串是否包含子字符串:

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

【讨论】:

  • 更像是 "b = string.indexOf("I am") != -1;"
【解决方案2】:

我没有足够的“声誉点”来回复 cmets,但接受的答案有错误。 indexOf() 在找不到子字符串时返回-1,所以应该是:

    b = string.indexOf("I am") >= 0; 

【讨论】:

【解决方案3】:

查看contains(CharSequence) 方法

【讨论】:

    【解决方案4】:

    试试这个-

    etsearch.getText().toString().contains((String) countryCode[i]);
    

    【讨论】:

      【解决方案5】:

      你可以使用包含。如:

      myString.contains("xxx");
      

      另见:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html,特别是包含区域。

      【讨论】:

        【解决方案6】:

        使用以下内容:

        public boolean contains (CharSequence cs)
        

        自:API 级别 1

        确定此 String 是否包含传递的 CharSequence 中的字符序列。

        Parameters
        

        cs要搜索的字符序列。

        Returns
        

        true 如果字符序列包含在此字符串中,否则 false

        【讨论】:

          【解决方案7】:

          实际上,android 中默认的 Arrayadapter 类似乎只从整个单词的开头搜索,但通过使用自定义 Arrayadapter 类,您可以搜索任意字符串的一部分。我已经创建了整个自定义类并发布了库。这是非常容易使用。您可以通过here 或单击下面提供的链接查看实现和使用情况。

          https://github.com/mohitjha727/Advanced-Search-Filter

          你可以参考这个简单的例子—— 我们有名字“Mohit”和“Rohan”,如果我们只输入“M”,那么 Mohit 就会出现在搜索结果中,但是当我们输入“oh”时,Mohit 和 Rohan 都会出现,因为它们有共同的字母 'oh'。

          谢谢。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-09-15
            • 1970-01-01
            • 2019-01-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多