Java 比较忽略大小写

标签 java string string-comparison

我正在创建一个方法,其中用户输入必须键入 A/B 才能获得返回。我如何使我的代码不区分大小写以使其正常工作?

 String examcode (String code) {
    if (code.compareToIgnoreCase("A")) {
        EXAM_NAME = "Subject A";
    }
    else if (code.compareToIgnoreCase("B")) {
         EXAM_NAME = "Subject B";
    }
    else {
        EXAM_NAME = "no code";
    }
    return EXAM_NAME;
}

最佳答案

使用equalsIgnoreCase(),而不是compareToIgnoreCase()

if (code.equalsIgnoreCase("A")) {
   EXAM_NAME = "Subject A";
} //...

如果要使用compareToIgnoreCase()检查相等性,则需要将结果与0进行比较:

if (code.compareToIgnoreCase("A") == 0) {
    //...

就像任何其他 compareTo 方法一样。但在这里使用它没有任何优势。

编辑:

整个方法的替代方法可能是使用不区分大小写的映射。像这样的事情:

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

subjects.put("A", "Subject A");
subjects.put("B", "Subject B");

//...
String subjectName = subjects.get(code);
if ( subjectName == null ) {
    subjectName = "no code";
}

或者,您也可以使用普通的区分大小写的映射,并在执行映射操作之前将所有键转换为小写。

关于Java 比较忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337001/

相关文章:

java - 如何在 java 中引用供应商或消费者的私有(private)方法

PHP SQL 字符串赋值抛出服务器错误

c - 0xC000005 读取时访问冲突,在 C 中使用 strcmp

ios - 使用 nspredicate 将 for 循环中的 NSArray 与给定输入进行比较

java - 为什么Tuckey UrlRewrite Filter在规则匹配后不调用chain.doFilter?

java - 从其他类(扩展广播接收器)调用 MainActivity 方法

java - 如何在 Java 中打印二维数组中的最大值路径?

python - Python 中的变量插值

regex - 如何将一个字符串与另一个之间有空格的字符串进行比较

java - 如何仅比较前三个字符并删除匹配元素?