不同浏览器下js的字符串split方法的差异

嘛,最近在各种直接拿代码调试,发现的问题可能稍微多了一点,姑且都记下来,这个随笔以后可能会不定期更新,因为相信不同浏览器之间各种差异还是很多的。

直接上代码

 1 <html>
 2     <head>
 3     </head>
 4
 5     <body>
 6         <script>
 7             var str = "/part1/part2";
 8             var _list = str.split(/[\\/]/);
 9             for(var i = 0;  i < _list.length; i++)
10             {
11                 var t = "_list[" + i + "]  :  " + "\‘" +  _list[i]  + "\‘";
12                 alert(t);
13             }
14         </script>
15     </body>
16 </html>

分别打开ff、chrome和IE8查看效果,发现结果是不同的

其中ff和chrome结果一样,是

[0] => ‘‘

[1] => ‘part1‘

[2] => ‘part2‘

而IE8则是

[0] => ‘part1‘

[1] => ‘part2‘

所以如果通过索引来使用_list的话,自然浏览器之间就会出现不同的结果了

换一组代码,注意  var str = 的这行代码不同了

 1 <html>
 2     <head>
 3     </head>
 4
 5     <body>
 6         <script>
 7             var str = "part1/part2/";
 8             var _list = str.split(/[\\/]/);
 9             for(var i = 0;  i < _list.length; i++)
10             {
11                 var t = "_list[" + i + "]  :  " + "\‘" +  _list[i]  + "\‘";
12                 alert(t);
13             }
14         </script>
15     </body>
16 </html>

ff与chrome表现仍然一致,

[0] => ‘part1‘

[1] => ‘part2‘

[2] => ‘‘

而IE8为

[0] => ‘part1‘

[1] => ‘part2‘

往后的例子就不再举了,但是可以发现的一个规律是,IE8把分割出来之后的空字符串都给吞了。。。这简直让人无语。。。

但是不使用正则表达式时,IE8却又没有问题了,注意  var _list = str.split("/");  而不是正则   var _list = str.split(/[\\/]/);

<html>
    <head>
    </head>

    <body>
        <script>
            var str = "part1//part2/";
            var _list = str.split("/");
            for(var i = 0;  i < _list.length; i++)
            {
                var t = "_list[" + i + "]  :  " + "\‘" +  _list[i]  + "\‘";
                alert(t);
            }
        </script>
    </body>
</html>

嗯,IE8又满血复活了。。。

不同浏览器下js的字符串split方法的差异

时间: 2024-10-24 12:46:27

不同浏览器下js的字符串split方法的差异的相关文章

JS常用字符串处理方法总结

1.indexOf()方法,从前往后查找字符串位置,大小写敏感,从0开始计数.同理,lastIndexOf() 方法从后往前,两个方法对于相同的检索条件输出的结果是一样的 例如: <script type="text/javascript"> var str="Hello World!" document.write(str.indexOf("Hello"))//输出0 document.write(str.indexOf("

js中字符串的方法

js String对象中常用方法小结,需要的朋友可以参考下: 1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码. strObj.charCodeAt(index) 说明: index将被处理字符的从零开始计数的编号.有效值为0到字符串长度减1的数字. 如果指定位置没有字符,将返回NaN. 例如: var str = "ABC"; str.charCodeAt(0); 结果:65 2.fromCharCode方法从一些Unicode字符串中返回一个字符串.

js数组声明+split()方法

split()方法:var words = sentence.split(' '): "hello".split("", 3) //可返回 ["h", "e", "l"] 数组声明:方法一:var a = new array();a[0] = "1";a[1] = 2;a[2] = { x:1, y:3};方法二:var  a  =  new array("1" ,

解决IE、firefox浏览器下JS的new Date()的值为Invalid Date的问题

当我们需要将一串日期字符串转换为具体的Date格式的时候,往往需要用到new Date("xxxx")方法. 当时在IE浏览器下,会遇到这种问题: new Date('2016-01-01 00:00:00') //却返回这个值Invalid Date,转换失败 但是这个方法却在谷歌浏览器上可以返回正确的结果. 解决方式:最终发现是字符串的格式不被某些浏览器失败,而导致的. new Date('2016/01/01 00:00:00') //这下就转换正确了Wed Jan 1 00:0

placeholder在不同浏览器下的表现及兼容方法

1.什么是placeholder? placeholder是html5新增的一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点(或输入内容)时,提示文字消失. 写法如下: 2.placeholder的浏览器兼容性和在不同浏览器下的表现 由于placeholder是html5的新属性,可想而知,仅支持html5的浏览器才支持placeholder,目前最新的firefox.chrome.safari以及ie10都支持,ie6到ie9都

Java 字符串Split方法的一个坑

java字符串的split,只传一个参数,后面空白的字符串会被忽略: public static void main(String[] args) { String str = "ab|c||"; String [] split = str.split("\\|"); System.out.println(Arrays.toString(split)); } 输出结果是[ab, c]. 解决方法是split第二个参数传一个负数,例如 public static vo

js的字符串替换方法String.format

简单的一个string.format的方法去替换字符串 String.format = function () { if (arguments.length == 0) return null; var str = arguments[0]; for (var i = 1; i < arguments.length; i++) { var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm'); str = str.replace(re, arguments

C#字符串Split方法的误区

string s = "aaa1bbb2ccc1ddd";        string[] ss = s.Split("12".ToCharArray()); 这句话的意思是1和2每个字符分别是分割关键字,而不是12是分割关键字,一定要弄清晰. 输出值为 aaa bbb ccc ddd

python 字符串split()方法

如果str.split()中什么都不填写,则字符str是按照"空格键.\t .\n"等特殊字符分割 如下代码: 1 [[email protected] myTestPython]# python3 split.py 2 分割前:abc efg hijk lmn 3 xwzy 4 uvw 5 分割后: ['abc', 'efg', 'hijk', 'lmn', 'xwzy', 'uvw'] 原文地址:https://www.cnblogs.com/dbj66/p/8535447.htm