日期:2014-05-16  浏览次数:20415 次

怎样在js中判断一个字符串包不包含另外一个字符串?
在javascript,有一个string s="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17",怎样判断"1","2","3"在不在这个s中,是不是要先把这个s转换成list,然后用list.contains判断,js里面有java中的这样的方法吗?
谁能帮我写一下判断代码??
------解决方案--------------------
①、在字符串的两边加","
②、javascript用indexOf()或则search()与-1比较都可以,记得是-1不是0哟。java可以直接用contains而不用转为list,应为String也有contains方法。

解释下为什么加",",主要是为了结果的正确性,比如"abc, de, fgh"中是否包含"bc",如果仅仅用答案是否定的,但是仅仅用indexOf和search与-1比较都返回true。
再解释下为什么要和-1比较而不是0,字符串下标从0开始,检索不到结果返回-1。
完整事例:
var str = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17"
var srcStr = "1";
if ((',' + str + ',').search(',' + srcStr +',') > -1) {
    alert(srcStr + ' is contains in ' + str);
}

为了进一步验证","可以将var str = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17"
还为var str = "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17"然后分别用1楼的方法和我的方法测试看看结果。
------解决方案--------------------

<script type="text/javascript">
var s="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17";
var c=s.split(",");
var t="1,2,3,18,22,5";
var b=t.split(",");
for(var i=0;i<b.length;i++){
var find=0;
for(var j=0;j<c.length;j++){
if(b[i]==c[j]){
find=1;
break;
}
}
if(find) alert(b[i]+"在字符串S中,对应新数组C下标为"+j);
else 
alert(b[i]+"不在字符串S中");
}
</script>