[英]Javascript replace() removing one of the two special characters
在变量var2中替换{t},从var1中删除“ $”符号,并将其呈现为abc $ abc而不是最终结果中的abc $$ abc。
var var1 = 'abc$$abc';
var var2 = 'You are comparing {t} entity';
$('#div1').append('<div id="div2">' + var2.replace('{t}','<a href="' + var1 + '" target="_self">' + '</a>') + '</div>');
我能找到的最接近的问题是带有特殊字符的Javascript追加元素 ,但即使这样也无法解决问题。
毫无疑问,我可以检查结果字符串是否仅包含两个$ s中的一个$,但是我想知道上面的append是否有问题,以及是否有任何通用的方法来实现结果字符串用两个$符号恢复。
$$
是String.replace()
的替换模式 ,始终由单个$
替换。 您需要将所有美元符号加倍:
var var1 = 'abc$$abc'.replace( /\$/g, '$$$$' );
(四个美元符号,因为它们再次充当替换模式。)
$
在javascript字符串替换中具有特殊含义。 当您使用$$
时,基本上可以逃脱其中之一。 如果您想要两个,可以使用四个$$$$
为了使您的代码特别有效,我认为这是最简单的事情:
var var1 = 'abc$$abc'.split("$").join("$$");
有关$
in replace()
$
详细信息,请参见此处: Mozilla docs
想通了,我也会在这里插入我的评论:
如果您需要确保在{t}
替换期间完成此操作(如果字符串在初始化后可能会更改),则可以像这样将其放入:
$('#div1').append('<div id="div2">' +
var2.replace('{t}','<a href="' +
var1.split("$").join("$$") +
'" target="_self">' + '</a>')
+ '</div>');
或者,如果这是需要经常在各个地方完成的工作,则可以为其创建自己的函数,例如:
function replaceEscapingDollars(str, find, replacement) {
return str.replace(find, replacement.split("$").join("$$"));
}
那么您的代码将如下所示:
$('#div1').append('<div id="div2">' +
replaceEscapingDollars(var2, '{t}', '<a href="' + var1 + '" target="_self">' + '</a>') +
'</div>');
但最简单的事情可能就是根本不使用replace
...
var2.split('{t}').join(var1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.