9

この関数を使用して、から2つの結果を作成しようとしています。value

function split(val){
  return val.split( /,\s*/ );
};
value = "Jim, ";
var terms = split( value );

terms;

IE9を含む他のすべてのブラウザは、terms = ["Jim", ""]

ただし、IE8およびおそらくIE7はこれを生成します:terms = ["Jim"]

IE8で機能する可能性のある提案や代替案はありますか?

4

2 に答える 2

5

次の方法を使用する方がよい場合があります。

val.split(',')

これは、すべてのブラウザーで一貫して機能するようです。

コンマの後の末尾の空白は、後で削除する必要があります。次のようなもの:

for (var i = 0; i < terms.length; i++) {
    terms[i] = terms[i].replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

split()明らかに、IE8 以前では、正規表現パラメーターが使用されている場合、空の文字列の一致は無視されます。文字列パラメーターは正常に機能します。

'axx'.split('x')    // All browsers: ["a", "", ""]
'axx'.split(/x/)    // IE6/7/8: ["a"], all other browsers: ["a", "", ""]
于 2012-06-21T19:06:52.690 に答える
-1

正規表現を書き直す必要があります。

これを試して。

String.prototype.trim = String.prototype.trim || function() {
    return this.replace(/^\s+|\s+$/g, ''); 
}
function split( str ){
    return (""+str).trim().split( /\,/ );
}
于 2012-06-21T19:02:46.720 に答える