2012-01-27 47 views
2

我有一個字符串需要被三個下劃線字符拆分。字符串的一個例子可能是:在IE8中將字符串拆分爲Javascript中的數組

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

所以我使用Split()函數。如果字符串中不包含這些字符,則會導致「對象不支持此屬性或方法」錯誤,除IE8以外的所有內容(可能還有7個,但未嘗試)。所以,我發現了另一個帖子裏面說要檢查下劃線出現分裂之前,在字符串中,所以我這樣做:太

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; 
     }; 
    } 
    } 
} 

但仍然沒有喜悅。

我現在已經過了沮喪的時刻,無法真正想到任何其他方式讓這個簡單的事情工作。

任何人都可以對此有所瞭解,或者想到一種以跨瀏覽器的方式安全地將字符串拆分爲數組的另一種方法?這很簡單,但我現在無法想象。

謝謝大家!

+0

你完全確定'split'不IE8的工作? (我只是試圖在IE9中的「IE8模式」,也是在「IE7模式」,並且看起來很好) – cambraca 2012-01-27 20:18:06

+0

split()應該在IE8中支持 – kinakuta 2012-01-27 20:18:26

+0

對不起,我已經說得更清楚了。 Split支持IE8,但如果字符不在被分割的字符串中會引發異常 - 這可能發生在我的情況中,並且是導致問題的原因。 – Dan 2012-01-27 20:26:08

回答

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'))