在IE8中使用Javascript将字符串拆分为数组

Split string into array with Javascript in IE8

本文关键字:字符串 拆分 数组 Javascript IE8      更新时间:2023-09-26

我有一个字符串,需要用三个下划线字符分隔。字符串的一个例子可能是:

var stringItemsPlanner = "Hello this___is a string___which___needs splitting into___an array";

所以我使用Split()函数。除了IE8(可能还有7,但没有尝试过)之外,其他都很好。如果字符串不包含这些字符,IE8会给出"Object不支持此属性或方法"错误。所以我发现了另一篇帖子,上面说在拆分之前要检查字符串中是否出现下划线字符,所以我这样做了:

if (stringItemsPlanner.indexOf('___') == -1){
    arrItemsPlanner = [];
}else{
    arrItemsPlanner = stringItemsPlanner.split('___');
}

但现在这个错误也是因为显然IE8不支持"indexOf"。

经过大量搜索,我尝试在脚本顶部添加一些代码,以充当此方法的"polyfil":

if (!Array.prototype.indexOf){
  Array.prototype.indexOf = function(elt /*, from*/){
    var len = this.length >>> 0;
    var from = Number(arguments[1]) || 0;
    from = (from < 0)? Math.ceil(from) : Math.floor(from);
    if (from < 0){
      from += len;
      for (; from < len; from++){
        if (from in this && this[from] === elt){
          return from;
        }
        return -1;
      };
    }
  }
}

但仍然没有快乐。

我现在已经过了沮丧的地步,真的想不出任何其他方法来让这件简单的事情发挥作用。

有人能阐明这一点吗?或者能想出一种替代方法,以跨浏览器的方式将字符串安全地拆分为数组吗?这必须很简单,但我现在无法直接思考。

谢谢大家!

看看这里的

http://jsfiddle.net/mplungjan/Bnx6m/

var stringItemsPlanner = "Hello this___is a string___which___needs splitting into___an array";
var arrItemsPlanner = (stringItemsPlanner.length==0 || stringItemsPlanner.indexOf('___') == -1)? []:stringItemsPlanner.split('___');
alert(arrItemsPlanner.join(''n'))