JavaScript replace() 方法美元符号

IT技术 javascript string
2021-01-30 22:03:29

我有一个像这样的字符串aman/gupta,我想将它替换为aman$$gupta,为此我使用 JavaScriptreplace方法如下:

let a = "aman/gupta"
a = a.replace("/", "$")
console.log(a) // 'aman$gupta'

a = "aman/gupta"
a = a.replace("/", "$$")
console.log(a) // 'aman$gupta'

a = "aman/gupta"
a = a.replace("/", "$$$")
console.log(a) // 'aman$$gupta'

为什么第一种和第二种情况是相同的,当我使用$$$而不是时,我得到了预期的结果$$

6个回答

这是因为$$插入了一个"$".

所以,你需要使用:

a = "aman/gupta";
a = a.replace("/", "$$$$"); // "aman$$gupta"

请参阅以下特殊模式

Pattern   Inserts
$$        Inserts a "$".
$&        Inserts the matched substring.
$`        Inserts the portion of the string that precedes the matched substring.
$'        Inserts the portion of the string that follows the matched substring.
$n        Where n is a non-negative integer lesser than 100, inserts the nth
            parenthesized submatch string, provided the first argument was a
            RegExp object.
javascript 这样做的任何特殊原因?
2021-03-27 22:03:29
查看特殊图案。
2021-04-12 22:03:29

您也可以使用splitjoin以获得更好的性能,并且$对于这些功能并不特殊。

var a = "aman/gupta"
a = a.split('/').join('$$')
alert(a); // "aman$$gupta"
这并没有解决问题,但它可能是实现相同结果的更好方法。
2021-03-16 22:03:29
是的,这比替换功能好得多
2021-03-23 22:03:29

为避免需要转义特殊字符,您可以使用匿名函数作为替换器

a = "aman/gupta";
a = a.replace("/", function() {return "$$"});
console.log(a); // "aman$$gupta"

String.prototype.replace()文档

将函数指定为参数

您可以指定一个函数作为第二个参数。在这种情况下,将在执行匹配后调用该函数。函数的结果(返回值)将用作替换字符串。注意:上述特殊替换模式不适用于这种情况。)请注意,如果第一个参数中的正则表达式是全局的,则该函数将针对每个要替换的完整匹配被多次调用。

replace方法提供了以美元符号开头的替换模式。其中之一是$$插入单个$. 替换字符串中的单个美元符号将生成文字符号。

因此,如果您想要干净的文字美元符号,请相应地使用$$替换模式:

console.log('aman/gupta'.replace('/','$$')); // aman$gupta
console.log('aman/gupta'.replace('/','$$$$')); // aman$$gupta
console.log('aman/gupta'.replace('/','$$$$$$')); // aman$$$gupta

在正则表达式中用组替换,如果替换为变量,则需要将美元符号转义。否则会有bug。

function escapeDollarSign(str) {
return str.replace(/\$/g, "$$$$")
}