Java CompareToIgnoreCase

时间:2012-09-09 06:24:34

标签: 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;
}

6 个答案:

答案 0 :(得分:5)

使用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";
}

或者,您也可以使用正常区分大小写的地图,并在执行地图操作之前将所有键转换为小写。

答案 1 :(得分:3)

只需使用方法 - String.equalsIgnoreCase(java.lang.String)返回boolean并为您要找的内容完成工作。

由于if (code.compareToIgnoreCase("A"))返回compareToIgnoreCase

int无效。

答案 2 :(得分:3)

阅读javadoc for String会为您提供答案。谷歌本来可以改变它。

  • 使用code.equalsIgnoreCase("your string")返回布尔值,或

  • 使用code.compareToIgnoreCase("your string") == 0compareToIgnoreCase为您提供了一种确定两个字符串“顺序”的方法。再次,享受javadoc。

答案 3 :(得分:1)

使用相同的代码,但使用equalsIgnoreCase(String)而不是compareToIgnoreCase(String)。

答案 4 :(得分:0)

你想要的是String#equalsIgnoreCase(String),它返回一个布尔值。

答案 5 :(得分:0)

在比较之前使用String.toLowerCase()(或String.toUpperCase())。

if (code.toLowerCase().equals("a")) {
    EXAM_NAME = "Subject A";
}

请注意,与所有字符串方法一样,code.toLowerCase不会更改存储在“code”中的字符串,但会以小写形式返回“code's value”的副本。