4

以下の例の「this」を「$$Ashok」に置き換えようとしていますが、期待どおりの出力が得られません。

    var adHtmltext ="this is ashok"
    adHtmltext = adHtmltext.replace("this", "$$Ashok");
    alert(adHtmltext );

出力に 1 つの $ が表示されるのはなぜですか? これを修正するには?

これがjsfiddle http://jsfiddle.net/RxDa5/です

助けてください。

4

7 に答える 7

6

MDNのドキュメントをご覧ください。

置換文字列には、次の特別な置換パターンを含めることができます。

$$ Inserts a "$".

だからあなたはしなければなりません:

adHtmltext.replace("this", "$$$$Ashok");

Javascript 文字列置換の奇妙さも参照してください-- $$$$ が $$ に折りたたまれます -- この結果の背後にある理由は何ですか? .

于 2012-07-23T16:01:39.800 に答える
3

$$は正規表現後方参照のエスケープ コードであるため、 のエスケープ コードです$$残念ながら、これが必要です:

var adHtmltext ="this is ashok"
adHtmltext = adHtmltext.replace("this", "$$$$Ashok");
alert(adHtmltext );
于 2012-07-23T16:02:46.813 に答える
3

ドル記号は予約文字です。.replace()

実際、あなたの jsFiddle コードの一番上で、予約された目的のために使用して$1います。つまり、式の一部をキャプチャするためにそこにあるものです。

$$ドル記号をエスケープするために使用されます。このコンテキストでは、実際に必要なドル記号ごとに 2 つのドル記号が必要です。

$1そうしないと、出力に文字列を含めることができなかったからです。

于 2012-07-23T16:04:49.483 に答える
2

この.replaceメソッドは、最初の引数として正規表現も受け入れます。テキストの一部をグループ化する場合は、「$」文字とグループ化するグループを指定する番号を使用して「後方参照」を使用して、出力テキストに含めることができます。 ($1、$2 など) を使用します。

「$」はこのコンテキストでは特別な意味を持つため、エスケープする必要があり、「$$」は通常の「$」を生成するためのエスケープ シーケンスであるため、コードに「$$$$Ashok」が必要なだけです。 .

于 2012-07-23T16:03:02.470 に答える
1

ターゲット パターンを置き換える文字列に含めることができる特別なパターンがあり、'$$' を含む文字列はその 1 つです。より良いリファレンスについては、 Mozilla MDN ドキュメントを参照してください。

具体的には、「$&」などの他の文字と「$」の特定の組み合わせが特定の部分文字列との一致のために予約されているため、「$$」は「$」になります。置換を機能させたい場合は、'$$$$Ashok' を使用してください。最終文字列では '$$Ashok' になります。

于 2012-07-23T16:01:55.727 に答える