var strArray = str.split(",");
alert(strArray.length); // ---> 5
var strArray2 = str.split(/,/);
alert(strArray2.length); // ---> 2
如何解释? 正则表达式不保留空值吗? 为什么不保留呢
9 个解决方案
#1
var strArray2 = str.split(/,/g);
加个g
加个g
#2
这个问题目前我的感觉,只能归结于IE和FF解析引擎不一样..没找到相关说明 只能先记住测试结果了..
#3
/,/g : 匹配多次,所以能匹配到多个,进行切分
/,/ : 匹配一次,所以匹配到第一个,切分完事
#4
TO #3
我认为这个问题不应该这么理解..split()只是以一个字符串做为分割符 进行分割
所以/,/已经是,字符串了 与g无关..
而且测试下可以发现IE ,FF 解析结果是不一样的
<script type="text/javascript">
<!--
var str = "a,,b,,";
alert(str.split(',')); // IE: a,,b,, FF: a,,b,,
alert(str.split(/,/)); // IE: a,b FF: a,,b,,
//-->
</script>
#5
刚才在as下也试了下,结果和FF一致的,那就是IE自作聪明的//掐头去尾了...所以首选split(",")
#6
应该是MS的JScript实现不一样吧
#7
嗯,确实是ie/ff的差别.
关键是这个的差别.
这种情况下,ie/ff都按字符,(逗号)切分,不论是否有修正符g,都切分所有.
但是ie切分后的获得的数组自动把空值移除,而ff保留空值元素.
关键是这个的差别.
alert(str.split(/,/));
这种情况下,ie/ff都按字符,(逗号)切分,不论是否有修正符g,都切分所有.
但是ie切分后的获得的数组自动把空值移除,而ff保留空值元素.
#8
这个问题与http://bbs.51js.com/viewthread.php?tid=84771&page=1有点点类似。
#9
如果是g的问题, 我就不会发这个贴了呵呵
只能姑且认为IE就是不保留空值了呵呵
谢谢各位呵呵
只能姑且认为IE就是不保留空值了呵呵
谢谢各位呵呵
#1
var strArray2 = str.split(/,/g);
加个g
加个g
#2
这个问题目前我的感觉,只能归结于IE和FF解析引擎不一样..没找到相关说明 只能先记住测试结果了..
#3
/,/g : 匹配多次,所以能匹配到多个,进行切分
/,/ : 匹配一次,所以匹配到第一个,切分完事
#4
TO #3
我认为这个问题不应该这么理解..split()只是以一个字符串做为分割符 进行分割
所以/,/已经是,字符串了 与g无关..
而且测试下可以发现IE ,FF 解析结果是不一样的
<script type="text/javascript">
<!--
var str = "a,,b,,";
alert(str.split(',')); // IE: a,,b,, FF: a,,b,,
alert(str.split(/,/)); // IE: a,b FF: a,,b,,
//-->
</script>
#5
刚才在as下也试了下,结果和FF一致的,那就是IE自作聪明的//掐头去尾了...所以首选split(",")
#6
应该是MS的JScript实现不一样吧
#7
嗯,确实是ie/ff的差别.
关键是这个的差别.
这种情况下,ie/ff都按字符,(逗号)切分,不论是否有修正符g,都切分所有.
但是ie切分后的获得的数组自动把空值移除,而ff保留空值元素.
关键是这个的差别.
alert(str.split(/,/));
这种情况下,ie/ff都按字符,(逗号)切分,不论是否有修正符g,都切分所有.
但是ie切分后的获得的数组自动把空值移除,而ff保留空值元素.
#8
这个问题与http://bbs.51js.com/viewthread.php?tid=84771&page=1有点点类似。
#9
如果是g的问题, 我就不会发这个贴了呵呵
只能姑且认为IE就是不保留空值了呵呵
谢谢各位呵呵
只能姑且认为IE就是不保留空值了呵呵
谢谢各位呵呵