Javascript 根据映射-JS替换字符串中的某些值
我有一个字符串,后面跟一个冒号。我需要用对象中的值替换该字符串中的冒号。我能够提取冒号词,但不确定在字符串中替换冒号的最佳方法 这就是我所拥有的: 常量字符串='这是:state:buttonName by:name'; const buttonName='按钮链接'; 常数数据={ 州:“阿拉巴马州”, 姓名:“阿伦” } const res=string.match/:[a-zA-Z]+/g.mapi=>i.replace':', 控制台。logres //这是Arun的Alabama按钮链接您可以拆分字符串,然后调用数组映射来替换单词并连接到最终字符串Javascript 根据映射-JS替换字符串中的某些值,javascript,regex,string,Javascript,Regex,String,我有一个字符串,后面跟一个冒号。我需要用对象中的值替换该字符串中的冒号。我能够提取冒号词,但不确定在字符串中替换冒号的最佳方法 这就是我所拥有的: 常量字符串='这是:state:buttonName by:name'; const buttonName='按钮链接'; 常数数据={ 州:“阿拉巴马州”, 姓名:“阿伦” } const res=string.match/:[a-zA-Z]+/g.mapi=>i.replace':', 控制台。logres //这是Arun的Alabama按钮
const str= 'This is :state :buttonName by :name';
str.split(' ').map(a => {
if(a.startsWith(":"))
return data[a.replace(":","")];
return a;
}).join(' ');
如果已经从字符串中删除了:,则可以迭代对象键并用相应的值替换它们
...
const res = string.match(/:[a-zA-Z]+/g).map(i => i.replace(':', ''))
for (const [key, value] of Object.entries(data)) {
res = res.replaceAll(key, value);
}
首先,您需要移动constbuttonname='buttonlink';到阵列 您需要使用Stringreplace,但还需要捕获正则表达式的after:部分,并实际使用Group 1值作为键来获取正确的数据值 此外,您需要检查提取的密钥是否在字典中,以避免出现问题 你可以用 常量字符串='这是:state:buttonName by:name'; 常数数据={ 按钮名称:“按钮链接”, 州:“阿拉巴马州”, 姓名:“阿伦” } const res=string.replace/:[a-zA-Z]+/g,m,i=>i在数据中?数据[i]:m
console.logresWiktor的答案很好。但是如果它也需要替换全局变量,我们可以编写如下代码
const res = string.replace(/:([a-zA-Z_]+)/g, (m, i) => data[i] ?? eval(i) ?? m);
console.log(res)
此代码尚未执行异常处理。应该考虑一下。所以我们可以定义一个替换函数来处理异常
const replacer = (m, i) => {
try {
return data[i] ?? eval(i);
} catch {
return m;
}
}
const res = string.replace(/:([a-zA-Z_]+)/g, replacer);
这回答了你的问题吗?us regex global flag replace/:/g,当然它不是此处的副本,问题在于匹配特定格式的标记,这些标记以:开头,然后只包含字母,而不是该线程中的情况,并将其替换为字典中的项目。一点关系也没有。