簡體   English   中英

`string.replace` 使用美元符號 ($) 作為替換時的奇怪行為

[英]`string.replace` weird behavior when using dollar sign ($) as replacement

我在我的 JavaScript 代碼中發現了一個錯誤,我將其隔離到字符串替換中,該錯誤的行為方式出乎我的意料。 以下是代碼示例:

var text = "as";
text = text.replace(text,"$\'");
console.log(text);

這將向控制台打印一個空字符串。 我期待它打印 $' 到控制台。 誰能解釋一下?

為了使用$在生成的字符串,用$$$在JavaScript的正則表達式的特殊含義和字符串replace方法: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/字符串/替換#Specifying_a_string_as_a_parameter

如果我不知道我使用的替換字符串中有什么

replaceWith = "might have 2 $ signs $$ $$$ $$$$"
"a b c".replace("b", replaceWith) // unexpected result
"a b c".replace("b", function(){return replaceWith}) // no surprises

實際上,這個問題最直接的答案是使用替換字符串的函數,因為 w3c 規范聲明這個結果不會受到特殊字符的影響。

 var str = "abc {def} ghi"; console.log(str.replace("{def}", function() { return "foo$'bar"; })); // result is // "abc foo$'bar ghi"

MDN 文檔在這里: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM