首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >忽略案例检查用户输入

忽略案例检查用户输入
EN

Stack Overflow用户
提问于 2015-08-03 00:58:42
回答 7查看 12.2K关注 0票数 2

我需要检查用户输入是否与集合或列表中的任何内容匹配,但我目前使用的是.contains()。显然,当用户输入一些不正确的情况时,这是行不通的,所以我考虑使用.matches( regex ),但不是专业的正则表达式。

我是否可以使用Regex或模式来检查用户输入是否与列表中的任何内容匹配?

谢谢。

我注意到,在将元素与.matches()进行比较之前,必须使用for-循环将元素从集合中提取出来。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-08-03 05:40:47

您可以暂时将两个字符串转换为小写或大写,然后进行匹配。

代码语言:javascript
复制
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
       }
}

代码语言:javascript
复制
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
       }
}
票数 0
EN

Stack Overflow用户

发布于 2015-08-03 01:10:47

您可以尝试使用该模式的Pattern.CASE_INSENSITIVE。

票数 1
EN

Stack Overflow用户

发布于 2015-08-03 01:22:39

我不明白你为什么不能使用String.equalsIgnoreCase()。这不需要Regex。如果使用List,则可以在此Predicate中使用.stream().anyMatch()

代码语言:javascript
复制
c -> c.equalsIgnoreCase(data)

代码示例:

代码语言:javascript
复制
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");
    }
}

结果:

代码语言:javascript
复制
Enter data: gIRAffE
Data found

Enter data: lamb
Data not found
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31778095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档