我正在创建一个方法,其中用户输入必须键入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;
}
答案 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") == 0
。 compareToIgnoreCase
为您提供了一种确定两个字符串“顺序”的方法。再次,享受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”的副本。