2012-01-27 4 views
2

3つのアンダースコアで分割する必要がある文字列があります。文字列の例は次のとおりです。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」をサポートしていないので:だから私は、アンダースコア文字が分割前に文字列に表示されますので、私はこれを行うことを確認した別のポストを見つけました。

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

しかし、まだありません喜び:私はこの方法のための「polyfil」として行動する私のスクリプトの先頭にいくつかのコードを追加しようとした検索をたくさんした後

私は今、欲求不満の地点を過ぎているので、この単純なことを動作させる他の方法を考えることはできません。

誰にでもこれを見せたり、別の方法で文字列を配列に分割してブラウザ間で安全に動作させることはできますか?シンプルにする必要がありますが、今はまっすぐ考えることができません。

ありがとうございます!

+0

を持って、あなたは 'split'はIE8で動作しません完全によろしいですか? (私はちょうどIE9の "IE8モード"で "IE7モード"で試してみましたが、それは問題ありません) – cambraca

+0

split()はIE8でサポートされています – kinakuta

+0

申し訳ありません。 SplitはIE8でサポートされていますが、文字が分割されていない場合は例外が発生します。これは私の場合に起こる可能性があり、問題の原因です。 – Dan

答えて

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')) 
関連する問題