我有一个名为 String 的变量,其中有一个名为 bar 的标签。 var String = "Foo <Object.1>"
我有一个名为 Object 的对象,var Object = {1:"Bar",2:"More Bar",3:"Even more Bar"}
,现在我需要将标签 Object.1 替换为 ,所以我最终得到这样的结果:var String = "Foo Bar"
这里有一个问题:我可能在一个字符串中有多个(和不同的)标签,而且我永远不知道我在该字符串中有哪些标签和多少标签,而且对象内部可能有数百万个变量。
寻求帮助, 卢卡
最佳答案
您可以使用适当的变量名和替换对象的全局变量 String#replace
可以访问 window
对象和键,取自字符串。
var string = "Foo <object.1>",
object = { 1: "Bar", 2: "More Bar", 3: "Even more Bar" };
string = string.replace(/<([^.]+)\.([^>]+)>/, function (_, v, k) {
return window[v][k];
});
console.log(string);
更好的方法是将替换部件存储到对象中并将部件作为键,而不使用 window
对象。那么对象也可以是本地的。
var string = "Foo <object.1>",
values = { object: { 1: "Bar", 2: "More Bar", 3: "Even more Bar" } };
string = string.replace(/<([^.]+)\.([^>]+)>/, function (_, k1, k2) {
return values[k1][k2];
});
console.log(string);
关于javascript - 用变量替换字符串的变量名的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42043875/