我正在尝试对 String 对象进行原型(prototype)设计,使其具有 replaceWith 函数,使我能够在不使用正则表达式的情况下直接替换
String.prototype.replaceWith = function(f, t) {
var regExp = new RegExp("[" + f + "]", "g");
return this.replace(regExp, t);
};
例如,当我在这个字符串 {{Hello}} 中测试我的代码时,我发现替换双花括号是一个问题
测试
'{{Hello}}'.replaceWith('{{','<<').replaceWith('}}','>>');
结果是
"<<<<Hello>>>>"
应该是什么时候
"<<Hello>>"
我的脚本有什么问题??
谢谢你的帮助
最佳答案
[{{]
与 [{]
完全相同这与 {
相同在正则表达式中。方括号表示匹配该类中任何字符之一的字符类。你应该改变:
"[" + f + "]"
收件人:
f
所以你有:
String.prototype.replaceWith = function(f, t) {
var regExp = new RegExp(f, "g");
return this.replace(regExp, t);
};
正如 Marlin 指出的那样,它与 String.prototype.replace
具有相同的功能除了你不需要添加 g
修饰符,在我心目中'{{Hello}}'.replace(/{{/g, '<<');
比 '{{Hello}}'.replaceWith('{{', '<<');
更简洁易懂。 .
关于javascript - 用javascript替换双花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455555/