2017-05-03 114 views
-3

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

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

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

如果我输入部分字母,如“CA”,“切”或“PIZ”

然后我可以找到整个字为清单。

感谢

+2

Java的'String'有'contains'功能。在问一个问题之前你是否搜索过互联网?这是非常基本的东西。编辑:哦,是的,正如barbakini在他的回答中所说的,如果你想让搜索不区分大小写,你必须将搜索词和单词全部大写或小写,然后使用'contains'。 – nonzaprej

回答

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

.contains将做的工作,迭代循环,并保持在ArrayList<String>的匹配者加入的话。

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

.contains就像mysql。在java中还有其他的功能,如.startsWith.endsWith。你可以使用任何最适合的套装。

0

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

0

您可以使用类似

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

注意,这只会返回列表中的第一个字符串包含任何用户给你那么它是相当不准确的。

+0

对于不区分大小写的搜索,您还需要执行'userInput.toLowerCase()'。 – nonzaprej

+0

谢谢,包括现在。 –

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

0

假设你的意思是

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

最简单的办法是通过遍历您的字符串数组,并对每个单独的String做一个.contains。

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

这当然不会将上限考虑在内。但是这可以通过.toLowerCare或.toUpperCase轻松解决。

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