2012-02-16 10 views
0

にそれが動作私はFirefoxでこのコードをしようとした場合のstring.SplitはIE

var words = String.split(new RegExp(/[\-\s]/)); 
words // ["/[\-\s]/"] 

細かい

IEないで同じコード!

var words = String.split(new RegExp(/[\-\s]/)); 
words "Object doesn't support property or method 'split'" 

なぜですか? IEでそれを修正する最良の方法は何ですか?

+4

あなたは 'STRING'という変数を持っていますかあなたがしようとしています'String'オブジェクトにアクセスしますか? –

+0

あなたは何をしようとしていますか?代わりに特定の文字列を分割したくないのですか? Firefoxの出力はあまり役に立ちません。 – pimvdb

+0

Stringオブジェクトにアクセスしようとしています – antonjs

答えて

4

更新

問題は、あなたの引数は(すべて小文字)stringと呼ばれているということですが、あなたはそれを分割しようとしているときに(初期資本金)Stringを使用しています。 JavaScriptは大文字と小文字を区別する言語で、string !== Stringです。

ので、この変更:

var words = string.split(new RegExp(/[\-\s]/)), 
//   ^--- lower case s 

オリジナルの答え:これに

var words = String.split(new RegExp(/[\-\s]/)), 

splitはのインスタンスで、String.prototype(事実上の関数であります文字列)、ではなく自体(コンストラクタ関数)。だから、

var words = "some words and hyphenated-words here".split(/[\-\s]/); 
console.log(words); // ["some", "words", "and", "hyphenated", "words", "here"] 

サイドノート:あなたは、古いバグ問題内の周囲で作業している場合を除きnew RegExp(...)で正規表現リテラル(/[\-\s]/)をラップする必要はありません。グローバルフラグに関するいくつかの実装と、関数呼び出しの間にローカルリテラルのキャッシング/再利用がありますが、それにはgフラグを使用しないため、splitには関係ありません。

+0

+1ノートナゲットの – x0n

+0

ありがとう、しかし、私の質問は少し異なります...私は実装している完全なコードをお読みください。 – antonjs

+0

@AntonJs:大文字の誤りです。更新された回答をご覧ください。 –

1

私はStringオブジェクト自体がsplit()メソッドを持っていないと思います。 split()Stringインスタンスのメソッドです:

'a b c'.split(/\s/); //returns ['a', 'b', 'c'] 
0

split方法は次のようにStringクラスではなく、文字列には適用されないでください。

"abc-123 def-456".split(/[\-\s]/); 
関連する問題