StringUtils.containsAny中有“”的情况会得不到想要的结果
Stringutils中的containsAny循环调用了Stringutils.contains,在 contains(“1”,"")时,
CharSequenceUtils.indexOf(“1”,"", 0) = 0,因为"1".indexOf("", 0)=0
最终得到相反的结果
String s="0";
String a="";
String b=null;
String c ="0";
if(!StringUtils.containsAny(CommonConstants.COMMON_1,s,a,b,c)){
System.out.println("商户未开通其他业务信息,不发送电子协议:{}");
}else{
System.out.println("有1");
}
结果
有1
原因:
public static boolean contains(CharSequence seq, CharSequence searchSeq) {
if (seq != null && searchSeq != null) {
return CharSequenceUtils.indexOf(seq, searchSeq, 0) >= 0;
} else {
return false;
}
}
Stringutils中的containsAny循环调用了Stringutils.contains,在 contains("1","")时,
CharSequenceUtils.indexOf("1","", 0) = 0,因为"1".indexOf("", 0)=0
static int indexOf(CharSequence cs, CharSequence searchChar, int start) {
return cs.toString().indexOf(searchChar.toString(), start);
}