2012-12-28 13 views
7

に私が使用してJavaScriptで置き換えるやろうとしている:'' 置き換えるnはjavascriptの

r = "I\nam\nhere"; 
s = r.replace("\n"," "); 

しかし、代わりに私に

を与えて、私はここのように

だがsの値、 同じ結果を返します。

問題はどこですか?

+0

.replace()が\ nの最初の出現を置き換えます。 –

+0

これは期待どおりに機能するようです。 http://jsfiddle.net/3a7Jp/ –

+0

'\ n'にマッチしてスペースで置き換えていませんか?あなたが本当に '\'を置き換えるだけの場合は、置換関数から 'n'を削除してください... –

答えて

8

+0

これは、説明する方法です。 –

+0

グローバルと貪欲を混乱させて申し訳ありませんが修正されました。 –

3

使用s = r.replace(/\\n/g," ");

Get a reference

"G" JavaScriptでにコードが

+0

\ nはまだ文字列内の値です! –

+0

@AspiringAqib私は既に訂正しました –

+0

gは実際には "グローバル"の略です – Dennis

10

可能な場合は交換が複数回起こるべきことを意味する "貪欲" の略で置き換えるには問題は、すべてと一致するようにgフラグを使用する必要があることです。デフォルトではreplace()がオンになっていますLY最初に見つかったマッチに作用する:

var r = "I\nam\nhere", 
    s = r.replace(/\n/g,' '); 

gフラグを使用するには、しかし、あなたは正規表現のアプローチを使用する必要があります。

なお、変数を宣言するときはvarを使用してください。作成しないと変数はすべてグローバルになり、後で問題が発生する可能性があります。貪欲なフラグが正規表現のために不足している他の人が述べたように

s = r.replace(/\n/g, " "); 
2

.replace()は、グローバルマッチフラグを必要とします。正しい表現は他の人があなたに与えたようなものでなければなりません。

var r = "I\nam\nhere"; 
var s = r.replace(/\n/g,' '); 

最初から何が起こっていたかの違いを指摘したいと思います。 次の文

var r = "I\nam\nhere"; 
var s = r.replace("\n"," "); 

文は確かに正しいと文字\ nの1つのインスタンスを置き換えますを使用していました。それは別のアルゴリズムを使用します。置換する文字列を指定すると、最初のオカレンスが検索され、2番目の引数として指定された文字列に置き換えられます。正規表現を使用する場合、一致する文字を探し出すだけではなく、複雑な一致構文を記述することができます。一致または複数の一致が見つかった場合、置換されます。 JavaScriptの正規表現の詳細については、w3schoolsをご覧ください。

たとえば、作成したメソッドを、いくつかの異なるタイプのファイルからの入力を解析するために、より一般的にすることができます。オペレーティングシステムの違いにより、新しい行が必要な\ nまたは\ rのファイルを持つことは非常に一般的です。両方のコードを処理できるようにするには、正規表現のいくつかの機能を使用して書き直すことができます。

var s = r.replace(/\n/g,' ').replace(/\r/g,' '); 

をdiferentsはSOたとえば、 "改行" を設定するdiferentsの方法を使用しているため::MacのUnixのWindowsは、この後、あなたは白正常化するために、他の機能を使用することができますあなたが使用することができます

var r = "I\ram\nhere"; 
var s = r.replace(/[\n\r]/g,' '); 
+0

これはトリックです... – ATOzTOA

0

スペース。

関連する問題