Java中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");
}
}
————————————————
可以直接用String.valueOf()方法转为字符串后再用contains方法比较,这样就省去遍历这一步骤了