以递归方式将占位符文本替换为变量的值
Recursively replace placeholder text with the value of a variable
今天早些时候我发布了这个问题,这个问题很快就得到了令我满意的回答。
自从新需求曝光以来,我现在需要递归地用它的值替换变量占位符
这是我当前的代码示例。 完整的小部件可在此 Pastebin 中找到 -
$.widget('custom.contents', {
options : {
singleID : 'content-{index}',
linkID : 'link_to_{singleID}'
}, // options
_create : function(){
console.log(this._getOption(25, 'linkID'));
}, // _create
_getOption : function(index, option){
var t = this; // The object
var optionValue = this.options[option].replace(/{(.+?)}/g, function(_, name){
return name === 'index' ? index : t.options[name];
});
return optionValue;
} // _getOption
});
如果我包括console.log(this._getOption(25, 'linkID'));
则输出值将为link_to_foobar-{index}
.
在返回该值之前,我想递归运行 _getOption()
函数,以确保替换包含在{}
中的所有值。
我怎样才能做到这一点?
您可以使用模式执行循环,在它继续匹配的同时,继续执行替换:
_getOption = function(index, option){
var opt = this.options[option];
var pattern = /{(.+?)}/g;
while(pattern.test(opt)){
opt = opt.replace(pattern, function(_, name){ // Search for all instances of '{(.+?)}'...
return name === 'index' ? index : t.options[name]; // ...Replace all instance of '{(.+?)}' with the value of the associated variable
});
}
return opt;
} // _getOption
现场示例:https://jsfiddle.net/7ng1bhda/1/
相关文章:
- 使用JavaScript将标题文本替换为按钮文本
- jQuery在用新文本替换HTML文本时淡出HTML文本,而不是仅显示
- 为什么不'使用此JavaScript将文本替换为不起作用的链接
- 将元素文本替换为子项中的值
- 使用 Jquery 将文本替换为笑脸图像
- 将页面上的文本替换为 jQuery 并提示文件下载
- 使用 JavaScript 将文本替换为图像
- 将 d3 演示中的圆圈和文本替换为包含自定义 HTML 和 ko 绑定的 foreignObject
- JavaScript无法用新文本替换文本
- 将表中的文本替换为用户友好的文本
- 如何在HTML标签中获取javascript变量文本值
- 将.onclick属性中的文本替换为javascript
- Javascript/Jquery.使用带通配符的正则表达式将纯文本替换为html
- 按名称将文本替换为 JavaScript 属性的内容
- 如何将 JSON 字符串中的文本替换为 Greasemonkey 的用户脚本
- Javascript:用文本替换整个锚点
- 在Chrome扩展程序中将文本替换为Treewalker
- 通过将文本替换为类来换行/中断列表元素
- 如何使用javascript将文本替换为彩色文本
- 以递归方式将占位符文本替换为变量的值