2013-02-01 95 views
0

我有CSV格式ID的字符串在输入框中查找字符串的多个片段中的字符串

12,23,26,32

我要检查,如果这个字符串包含23或24,如果是则返回false ,否则返回true

+0

所有的答案,这一点是相当有限的,假设你只有永远需要检查的23或24.如果你需要它,你可能会得到一个更可重复使用/灵活的答案,如果你改一下这个问题:) –

+0

请注意,Internet Explorer <9不支持数组上的“indexOf”。 – MikeM

回答

1

使用indexOf。你可以检查它是否包含一个子字符串。如果没有找到,则返回-1

var str = "12,23,26,32" 
return !(str.indexOf("23")!=-1 || str.indexOf("24")!=-1) // Dont have 23 or 24 

======= =======编辑

像@马特在评论说,该解决方案还将致力于“12239, 26,32“,那不是重点。

使分割前检查的indexOf,那么你会得到逗号之间的元素。

var array = "12,23,26,32".split(","); 
return !(array.indexOf("23")!=-1 || array.indexOf("24")!=-1) // Dont have 23 or 24 
+2

麻烦的是,如果输入的字符串是“12,239,26,32”,那将会匹配。我认为OP希望输入字符串的每个csv都是一个要测试的原子单元。 –

+0

我明白了...你有一点。解决方案是在检查之前进行拆分,对吧?我编辑我的答案 –

-1
var str = "12,23,26,32"; 

var obj = str.split(","); 

var isFound = false; 

for(i=0; i < obj.length; i++) 
{ 
    if(obj[i] == "23" || obj[i] == "24") 
    { 
      isFound = true; 
      break; 
    } 
} 
return isFound; 
+0

-1,应该始终指定上parseInt函数的基数。另外,为什么要转换为一个数字,然后比较它呢? –

+0

+1,它更接近什么OP可能想比任何的indexOf或正则表达式的答案。 –

+0

@EvanTrimboli,你能解释一下吗? ''应该总是在字符串上指定基数' – DON

0
if (/(?:^|,)(23|24)(?:,|$)/.test("12,23,26,32")) { 
    /* found 23 or 24 */ 
} 
0

尝试此

var str = "12,23,26,32"; 

var isFound = (str.indexOf('23') || str.indexOf('24')) > -1; 
+1

麻烦的是,如果输入的字符串是“12,239,26,32”将匹配。我认为OP希望输入字符串的每个csv都是一个要测试的原子单元。 –

+0

哦,是的,因为它不会工作。我猜我错了 –

1
!/(^|,)2[34](,|$)/.test(str); 

,或者如果有可能是空白本

!/(^|,)\s*2[34]\s*(,|$)/.test(str); 

正则表达式test方法返回true如果字符串参数的常规expressio匹配如果不是,则为false!颠倒了测试呼叫的结果。

^是字符串开始的元字符,所以(^|,)意味着'在字符串的开头'或'一个逗号字符'。

它不能被写入[^,]因为这将意味着“一个字符不是一个逗号”,并且它不能被写入[,^]为意思是“一个字符,该字符逗号或文字^字符。

2[34]意味着随后3或4
(,|$) 2是指一个逗号或字符串的末尾$
\s*意味着零个或多个空格字符。

相关问题