javascript - 用变量替换字符串的变量名的子字符串

标签 javascript string variables replace substring

我有一个名为 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/

相关文章:

javascript - 如何使这个简单的 javascript 闭包工作

javascript - Ember.js:从 View 中确定当前路线

javascript - e 在 react js 组件中未定义

javascript Number 构造函数奇怪的行为

c - 为什么静态变量不允许loop()运行?

bash - 使用变量的值作为 scp、ssh 等的密码,而不是每次都提示用户输入

javascript - 正则表达式 - 如何匹配匹配和不匹配模式的所有字符组?

java - 使用 Java 正则表达式模式解析字符串?

ruby-on-rails - ruby /rails : How can I replace a string with data from an array of objects?

Javascript 变量不会在循环外更新,在 OK 内