gpt4 book ai didi

javascript - Crockford 的 String.supplant 中的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:27:41 25 4
gpt4 key购买 nike

我需要创建一个类似于 Douglas Crockford 的 String.supplant 的函数:

if (typeof String.prototype.supplant !== 'function') {
String.prototype.supplant = function (o) {
return this.replace(/{([^{}]*)}/g, function (a, b) {
var r = o[b];
return typeof r === 'string' ? r : a;
});
};
}

它的作用是:

var html = '<div>{title}<h3>{time}</h3><p>{content}</p></div>';
var object = {title: "my title", time: "12h00m", content:"blablabla"}
supplanted = html.supplant(object);
//supplanted returns:
//<div>my title<h3>12h00m</h3><p>blablabla</p></div>

我需要,我的标签的项目是不同的:而不是 {tagname},我需要它是 [ns:tagname]

这里有没有人有足够的正则表达式知识来帮助我?
非常感谢

最佳答案

以下作品:

if (typeof String.prototype.supplant !== 'function') {
String.prototype.supplant = function (o) {
return this.replace(/\[ns:([^\[\]]*)\]/g, function (a, b) {
var r = o[b];
return typeof r === 'string' ? r : a;
});
};
}

请注意,括号被转义(例如,[] 变为 \[\]),因为它们在正则表达式中具有特殊含义。

例子:

var html = '<div>[ns:title]<h3>[ns:time]</h3><p>[ns:content]</p></div>';
var object = {title: "my title", time: "12h00m", content:"blablabla"}
supplanted = html.supplant(object);
// "<div>my title<h3>12h00m</h3><p>blablabla</p></div>"

关于javascript - Crockford 的 String.supplant 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6857552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com