a24*_*918 2 javascript regex string
我有一个字符串,其中包含单词,后跟冒号。我需要用对象中的值替换该字符串中的冒号。我能够提取出冒号单词,但不确定在字符串中替换它的最佳方法。
这就是我所拥有的:
const string = 'This is :state :buttonName by :name';
const buttonName = 'button link';
const data = {
state: 'Alabama',
name: 'Arun'
}
const res = string.match(/:[a-zA-Z]+/g).map(i => i.replace(':', ''))
console.log(res)
// This is Alabama button link by ArunRun Code Online (Sandbox Code Playgroud)
最终结果应该是
This is Alabama button link by Arun
Run Code Online (Sandbox Code Playgroud)
请指教。
首先,您需要移动const buttonName = 'button link';到阵列。
您需要使用String#replace,但还需要捕获之后的正则表达式部分:,并实际使用 Group #1 值作为键来获取正确的data值。
此外,您需要检查提取的密钥是否在字典内以避免出现问题。
您可以使用
const string = 'This is :state :buttonName by :name';
const data = {
buttonName: 'button link',
state: 'Alabama',
name: 'Arun'
}
const res = string.replace(/:([a-zA-Z]+)/g, (m, i) => i in data ? data[i] : m)
console.log(res)Run Code Online (Sandbox Code Playgroud)