【问题标题】:How to partial match with a string?如何与字符串部分匹配?
【发布时间】:2017-05-03 12:30:49
【问题描述】:

如何输入单词的部分字母来查找该单词?

例如: 我有一个字符串数组

 String[] s = {"Cartoon", "Cheese", "Truck", "Pizza"};

如果我输入部分字母,例如“ca”、“Che”或“piz”

然后我可以找到列表的整个单词。

谢谢

【问题讨论】:

  • Java 的String 具有contains 功能。问问题前你搜索过互联网吗?这是非常基本的东西。编辑:哦,是的,正如 barbakini 在他的回答中所说,如果您希望搜索不区分大小写,则必须将搜索词和单词全部设为大写或小写,然后使用 contains。

标签: java


【解决方案1】:
stringValue.contains("string that you wanna search");

.contains 将完成这项工作,遍历循环并继续在 ArrayList<String> 中添加匹配的单词。

这可能是一个很好的 read 在 java 中的字符串。

.contains 就像 mysql 中的 '%word%'。 java中还有其他函数,如.startsWith和.endsWith。你可以使用最适合的。

【讨论】:

    【解决方案2】:

    你可以使用类似的东西

    String userInput = (new Scanner(System.in)).next();
    for (String string : s) {
        if (string.toLowerCase().contains(userInput.toLowerCase()) return string;
    }
    

    请注意,这只会返回列表中包含用户提供的任何内容的第一个字符串,因此相当不精确。

    【讨论】:

    • 您也需要使用userInput.toLowerCase() 进行不区分大小写的搜索。
    • 谢谢,现在包括在内。
    【解决方案3】:

    尝试使用String#startsWith

    List<String> list = new ArrayList<>();
    list.add("Apples");
    list.add("Apples1214");
    list.add("NotApples");
    list.stream().map(String::toLowerCase)
                 .filter(x->x.startsWith("app"))
                 .forEach(System.out::println);
    

    如果您只想包含 String,请使用 String#contains

    【讨论】:

      【解决方案4】:

      首先将所有字符串转换为大写或小写,然后使用startsWith()方法。

      【讨论】:

      • 你有例子吗?
      【解决方案5】:

      假设你的意思

      String[] s = {"Cartoon", "Cheese", "Truck", "Pizza"};
      

      最简单的选择是遍历您的字符串数组并在每个单独的字符串上执行 .contains。

      for(int i = 0; i < s.length; i++){
         if(s[i].contains("car")){
            //do something like add to another list.
         }
       }
      

      这当然不会考虑上限。但这可以通过 .toLowerCare 或 .toUpperCase 轻松规避。

      【讨论】:

        猜你喜欢
        • 2015-12-31
        • 2019-10-28
        • 1970-01-01
        • 2012-06-15
        • 2020-05-02
        • 2020-09-24
        • 2019-10-18
        相关资源
        最近更新 更多