如何与字符串部分匹配?

时间:2017-05-03 12:30:49

标签: java

如何输入单词的部分字母才能找到这个单词?

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

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

如果我输入部分字母,例如" ca"," Che"或" piz"

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

由于

6 个答案:

答案 0 :(得分:3)

stringValue.contains("string that you wanna search");

.contains将执行此操作,迭代循环并继续在ArrayList<String>中添加匹配的单词。

对于java中的字符串,这可能是一个很好的read

.contains与mysql中的'%word%'类似。在java中还有其他函数,如.startsWith.endsWith。你可以使用最适合的东西。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用类似

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

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

答案 3 :(得分:0)

尝试使用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 :(得分:0)

假设你的意思

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可以很容易地避免这种情况。

答案 5 :(得分:0)

尝试此基本逻辑

    Scanner sc=new Scanner(System.in);

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

    System.out.println("Enter Characters");

    String matchCharStr = sc.next();

    for (int i = 0; i < s.length; i++) {
        if (s[i].toLowerCase().contains(matchCharStr.toLowerCase())) {
            System.out.println(s[i]);
        }
    }