替换变量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 append element with special characters,但即使这样也无法解决问题。
毫无疑问,我可以检查结果字符串是否只包含两个$ s的$,但我想知道上面的append是否有什么问题,以及如果有任何通用方法来实现结果结果字符串用两个$符号恢复。
答案 0 :(得分:2)
$$
是String.replace()
中的replacement pattern,始终由单个$
取代。你需要加倍所有美元符号:
var var1 = 'abc$$abc'.replace( /\$/g, '$$$$' );
(四美元符号,因为他们再次作为替代模式。)
答案 1 :(得分:1)
$
在javascript字符串替换中具有特殊含义。当你使用$$
时,你基本上是逃避其中一个。如果你想要两个,你可以使用四个$$$$
为了让您的代码具体运作,我认为这将是最简单的事情:
var var1 = 'abc$$abc'.split("$").join("$$");
有关$
中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)