Java CompareToIgnoreCase
我正在创建一个方法,用户输入必须键入a/B才能获得返回。如何使代码不区分大小写才能正常工作Java CompareToIgnoreCase,java,string,string-comparison,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"; } e
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()
,而不是compareTignoreCase()
如果要使用compareToIgnoreCase()
检查相等性,则需要将结果与0
进行比较:
if (code.compareToIgnoreCase("A") == 0) {
//...
就像任何其他比较方法一样。但是在这里使用它没有任何好处
编辑:
替代整个方法的另一种方法可能是使用不区分大小写的映射。大概是这样的:
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";
}
Map subjects=newtreemap(String.CASE不区分大小写顺序);
主体。将(“A”、“主体A”);
主体。将(“B”、“主体B”);
//...
字符串subjectName=subjects.get(代码);
if(subjectName==null){
subjectName=“无代码”;
}
或者,您也可以使用普通的区分大小写的映射,并在进行映射操作之前将所有键转换为小写。只需使用该方法即可-
它返回一个布尔值
,并根据您要查找的内容执行任务
if(code.compareTignoreCase(“A”)
无效,因为compareTignoreCase
返回int
您需要的是String#equalsIgnoreCase(String)
返回布尔值。在比较之前使用String.toLowerCase()(或String.toUpperCase())
if (code.toLowerCase().equals("a")) {
EXAM_NAME = "Subject A";
}
请注意,与所有字符串方法一样,code.toLowerCase不会更改存储在“code”中的字符串,而是以小写形式返回“code”值的副本 阅读这篇文章会为你提供答案。谷歌本来会把这个问题提出来的
- 使用返回布尔值的
code.equalsIgnoreCase(“您的字符串”)
,或
- 使用
code.compareTignoreCase(“您的字符串”)==0
compareTignoreCase
提供了一种确定两个字符串的“顺序”的方法。再一次,享受javadoc
使用相同的代码,但使用相等的SignoreCase(字符串)而不是CompareTignoreCase(字符串)
if (code.toLowerCase().equals("a")) {
EXAM_NAME = "Subject A";
}