if(class1.getMethod1().subString(0,1) == "1") && !class1.getMethod1().subString(0,1).equalsIgnoreCase(str1.subString(0,1)(shld be 1 or 2 or 3 )
即,字符串值为1或2或3,那么我应该跳过if条件 我无法给予
!class1.getMethod1().subString(0,1).equalsIgnoreCase(str1.subString(0,1) == 1 or 2 or 3
有人可以用适当的逻辑帮助我吗?
答案 0 :(得分:2)
您可以使用正则表达式来检查您的字符串是以1,2还是3(或不是)
开头if(!class1.getMethod1().matches("^(1|2|3).*$")){
//......
}
你不需要子串。
答案 1 :(得分:0)
您可以将字符串的输出存储在如下变量中:
String myStr = class1.getMethod1().subString(0,1);
然后使用equals()
方法而不是==
然后,您可以使用||
if(!myStr.equals("1") || !myStr.equals("2") || !myStr.equals("3")) {
// Run conditional code...
}
这将使if语句中的代码仅在myStr
的输出不是1,2或3时运行,因此如果字符串为1,2或3,则将跳过if语句
答案 2 :(得分:0)
有几个不应处理的案例遵循模式!A && !B && !C
。
String name = class1.getMethod1();
if (!name.startsWith("1") && !name.startsWith("2") && !name.startsWith("3")) {
...
}
答案 3 :(得分:0)
我会用这样的方法创建util类:
boolean isAny(String parameter, String ... values) {
for(String value : values) {
if(parameter.equals(value) {
return true;
}
}
return false;
}
您可以在if语句中使用它:
if(!YourUtil.isAny(class1.getMethod1().subString(0,1), "1", "2", "3")) {
//
}
这很好,因为你没有多余的||是什么让Sonar感到高兴。