js 替换字符串所有对象变量(??.xx / ??.xxx)的值,用指定对象??的值
时间: 2024-07-27 16:00:48 浏览: 110
在JavaScript中,如果你想要替换字符串中所有的对象变量形式(如`??.xx`或`??.xxx`),并且要用某个特定的对象`??`的值来替换,你可以使用正则表达式配合replace()函数。这里是一个简单的示例:
```javascript
let str = "Hello, (??.name). This is (??.age) years old.";
let obj = { name: 'Alice', age: 25 };
// 使用match方法找到所有匹配的模式
const matches = str.match(/(?<=[^.])(\??\.)([^?]+)/g);
if (matches) {
// 遍历匹配到的所有部分
for (let match of matches) {
let key = match.split('.'); // 提取键名
if (obj.hasOwnProperty(key)) {
str = str.replace(new RegExp("\\?" + key, "g"), obj[key]); // 用obj的属性值替换
}
}
}
console.log(str); // 输出: "Hello, Alice. This is 25 years old."
```
这个例子中,我们首先通过正则匹配出所有`??.`的形式,然后检查对象`obj`是否包含相应的键,如果存在,则使用`replace()`替换掉匹配的部分。
阅读全文