我需要检查用户输入是否与集合或列表中的任何内容匹配,但我目前使用的是.contains()。显然,当用户输入一些不正确的情况时,这是行不通的,所以我考虑使用.matches( regex ),但不是专业的正则表达式。
我是否可以使用Regex或模式来检查用户输入是否与列表中的任何内容匹配?
谢谢。
我注意到,在将元素与.matches()进行比较之前,必须使用for-循环将元素从集合中提取出来。
发布于 2015-08-03 05:40:47
您可以暂时将两个字符串转换为小写或大写,然后进行匹配。
for(int i=0;i<myList.length-1;i++){
if(myString.toLowerCase().contains(myList.get(i).toLowerCase())){
// your code if myString is contained within a String in the List
}
}或
for(int i=0;i<myList.length-1;i++){
if(myString.toUpperCase().contains(myList.get(i).toUpperCase())){
// your code if myString is contained within a String in the List
}
}发布于 2015-08-03 01:10:47
您可以尝试使用该模式的Pattern.CASE_INSENSITIVE。
发布于 2015-08-03 01:22:39
我不明白你为什么不能使用String.equalsIgnoreCase()。这不需要Regex。如果使用List,则可以在此Predicate中使用.stream().anyMatch()。
c -> c.equalsIgnoreCase(data)代码示例:
public static void main(String[] args) throws Exception {
List<String> check = new ArrayList() {{
add("dog");
add("CAT");
add("oWl");
add("GiraFFe");
}};
Scanner scanner = new Scanner(System.in);
System.out.print("Enter data: ");
String data = scanner.nextLine();
if (check.stream().anyMatch(c -> c.equalsIgnoreCase(data))) {
System.out.println("Data found");
} else {
System.out.println("Data not found");
}
}结果:
Enter data: gIRAffE
Data found
Enter data: lamb
Data not foundhttps://stackoverflow.com/questions/31778095
复制相似问题