最近在用contains这个方法时遇到了一个坑,特记下来与大家分享。如果有不对的地方希望大家多多指教
String str="/login/index.do";
if(str.contains("/login")){
System.out.println("true");
}else{
System.out.println("false");
}
这段代码顾名思义会返回true,因为contains比较两个字符串时,只要局部相等就算成立
List<String> list=new ArrayList<String>();
list.add("/login/index.do");
list.add("/login/exit.do");
if(list.contains("/login")){
System.out.println("true");
}else{
System.out.println("false");
}
这段代码会返回false,原因是:当用list去判断的时候,不是局部相等,而是list的其中一项要和字符串全部相等,也就是所谓的必须是两个字符串相等
解决办
List<String> list=new ArrayList<String>();
list.add("/login/index.do");
list.add("/login/exit.do");
for (String str : list) {
if(str.contains("/login")){
System.out.println("true");
}else{
System.out.println("false");
}
}
把list集合循环遍历,以每一个字符串去做比较,还是利用了最初两个字符串局部的比较
第一次写博客还望大家指教。以后都会把自己犯过的错误记录下来,避免下次再犯,同时也希望能帮助大家