我正在尝试将以下示例中的“this”替换为“$$ Ashok”。我没有得到预期的输出。
var adHtmltext ="this is ashok"
adHtmltext = adHtmltext.replace("this", "$$Ashok");
alert(adHtmltext );
为什么它会在输出中显示一个$?如何解决这个问题?
这是jsfiddle http://jsfiddle.net/RxDa5/
请帮忙。
答案 0 :(得分:6)
替换字符串可以包含以下特殊替换模式:
$$
Inserts a "$".
所以你必须这样做:
adHtmltext.replace("this", "$$$$Ashok");
答案 1 :(得分:3)
$$
是$
的转义码,因为$
是正则表达式反向引用的转义码。不幸的是,你需要这个:
var adHtmltext ="this is ashok"
adHtmltext = adHtmltext.replace("this", "$$$$Ashok");
alert(adHtmltext );
答案 2 :(得分:3)
美元符号是.replace()
事实上,在你的jsFiddle代码中,就在顶部,你已经将它用于它的保留目的 - 即你在那里获得的$1
来捕获部分表达式。
$$
用于逃避美元符号。对于您实际需要的每一个美元符号,您需要在此上下文中使用两个美元符号。
这是因为否则你的输出中没有字符串$1
。
答案 3 :(得分:2)
可以在字符串中包含用您替换目标模式的特殊模式,而带有'$$'的字符串就是其中之一。有关更好的参考信息,请参阅Mozilla MDN docs。
在具体情况下,'$$'变为'$'作为其他字符的某些组合与'$',如'$&'保留用于与某些子串匹配。如果你想让你的替代品工作,只需使用'$$$$ Ashok',它将成为最后一串中的'$$ Ashok'。
答案 4 :(得分:2)
.replace
方法也会接受正则表达式作为第一个参数,如果您对文本的一部分进行分组,则可以使用“$”将其包含在输出文本中并使用“反向引用”字符和数字指定要使用的组($ 1,$ 2等)。
因为'$'在这种情况下具有特殊含义,所以需要对其进行转义,并且'$$'是生成正常'$'的转义序列,因此您只需要'$$$$ Ashok'在你的代码中。
答案 5 :(得分:0)
寻找通用解决方案,我获得了以下内容:
var input = prompt( 'Enter input:' ) || '';
var result = 'foo X bar X baz'.replace( /X/g, input.replace( /\$/g, '$$$$' ) );
有效:
输入:$$
结果:foo $$ bar $$ baz输入:$&
结果:foo $&酒吧$&巴兹
但由于多级$
转义,这有点棘手。在内部$$$$
...
replace
所以,我尝试使用一个回调,不应用特殊的替换模式:
var result = 'foo X bar X baz'.replace( /X/g, function () {
var input = prompt( 'Enter input:' ) || '';
return input;
} );
它也有效,但有一个警告:每次替换都会执行回调。所以在上面的例子中,用户被提示两次......
最后,这里是“回调”解决方案的固定代码,通过将提示移出替换回调:
var input = prompt( 'Enter input:' ) || '';
var result = 'foo X bar X baz'.replace( /X/g, function () {
return input;
} );
总而言之,您有两种解决方案:
.replace(/\$/g, '$$$$')
转义答案 6 :(得分:0)
任何自定义替换功能都可以更优雅地解决此问题。您只需要从中返回想要的字符串,它就会被替换。
board[y][x] = "O"