检查 2 个不区分大小写的字符串或使用 equalsIgnoreCase 方法

问题描述

我有一些输入的字符串 659 用户可以将一些字符串导入应用程序一次而无需任何区分大小写的策略,例如:“开始”、“开始”、“开始”、“结束”、“结束”和等

我有一个地图,我将我的字符串(例如“开始”)插入其中并将其放入 String usrInput; 中:

HashMap<String,String> myMap

现在我想检查 Map<String,String> listofActions = new HashMap<>(); listofActions.put(myStr,myStr); 成员以获取例如在每个案例模型中归档的“开始”(“开始”、“开始”、“开始”),目前我喜欢以下内容

listofActions

所以我想知道:

1. 有没有办法在不区分大小写的情况下获取字符串值? 我还要在这里添加这个我不能使用 if (listofActions.containsKey(usrInput.toupperCase()) || listofActions.containsKey(usrInput.toLowerCase())) { /// some do } 方法equalsIgnoreCase() 获取项目,因为它返回 Map

2. 我在 switch-case 语句中有类似的问题来检查 2 个字符串是否不区分大小写。

解决方法

如果您只使用输入作为映射键(即您以后不需要在原始大小写中重现字符串),我建议在将它们插入映射之前将所有输入小写:

Map<String,String> listOfActions = new HashMap<>();
listOfActions.put(myStr.toLowerCase(),myStr);

这将简化稍后查找值的过程,因为您知道所有键都已小写,因此查找变得容易:

if (listOfActions.containsKey(myStr.toLowerCase())) {
  // do something
}
,

你可以使用

Map<String,String> listOfActions = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);

其他解决方案可以是 Apache 的 CaseInsensitiveMap 或 Spring 的 LinkedCaseInsensitiveMap。

有关这些解决方案的更多详细信息,请参阅 https://www.baeldung.com/java-map-with-case-insensitive-keys

,

当您创建 HashMap 的新实例时,您可以覆盖它的一些方法,例如 putcontainsKey,如下所示:

Map<String,String> map = new HashMap<>() {
    @Override
    public String put(String key,String value) {
        return super.put(key.toLowerCase(),value);
    }
    @Override
    public boolean containsKey(Object key) {
        return super.containsKey(key.toString().toLowerCase());
    }
};

map.put("START","doStart");

System.out.println(map); // {start=doStart}

System.out.println(map.containsKey("START")); // true
System.out.println(map.containsKey("Start")); // true
System.out.println(map.containsKey("start")); // true
,

您可以做的一件事是将所有内容都设为大写或小写,然后进行比较。

string.toLowerCase().equals("other string");
string.toUpperCase().equals("OTHERSTRING");

这样,无论是小写还是大写,它只会作为一种或另一种进行比较,并且表现为不区分大小写。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...