我想用另一个字符串替换两个字符之间的所有内容。我想出了这个功能:
String.prototype.unformat = function() {
var s='';
for (var i=0; i<this.length;i++) s+=this[i]
return s.replace(/\$[^$]*\$/g, '')
};
使用类似'This is a test $33$'
的字符串并使用上述函数取消格式化,它将返回&#39;这是一个测试&#39;。
好的,但是我想用相关的字符代码替换($ ... $)中的所有匹配项。
在示例'This is a test $33$'
中,我想用javascript String.fromCharCode()
函数的结果替换$ 33 $以获取字符串'This is a test !'
作为结果。
如何编辑上面的原型函数以获得所需的结果?
提前致谢:)
答案 0 :(得分:1)
您可以使用回调函数返回带有匹配代码的fromCharCode()
String.prototype.unformat = function() {
return this.replace(/\$([^$]*)\$/g, function (string, charcode) {
return String.fromCharCode(charcode);
});
};
console.log(("char: $33$").unformat());
为了避免将来出现任何问题,我还会将正则表达式调整为仅匹配数字:/\$(\d+)\$/g
答案 1 :(得分:0)
您可以使用匹配组()
并将其替换为String.fromCharCode
结果:
String.prototype.unformat = function() {
return this.replace(/\$(.*?)\$/g, function(match, group) { // the match is the whole match (including the $s), group is the matched group (the thing between the $s)
return String.fromCharCode(group);
});
};
备注:强>
this
)。(.*?)
是非贪婪的(懒惰的),匹配尽可能少的字符。示例:强>
String.prototype.unformat = function() {
return this.replace(/\$(.*?)\$/g, function(match, group) {
return String.fromCharCode(group);
});
};
console.log('This is a test $33$'.unformat());