我仍然是Javascript的新手,我不完全确定如何解决这个问题。
我希望它与关键字段匹配,并将其替换为其值。
const state = {
"NY": "New York"
}
你住在纽约 至 你住在纽约
所有州的名单都会很长,所以我想我必须使用对象。 任何帮助,将不胜感激!提前谢谢!
编辑>>>
非常感谢那些回复的人! 我在这里列出了美国,加拿大和墨西哥所有州的名单: https://gist.github.com/PepperAddict/b8c6c80af4a17908fd98378b4375047e
使用提供的代码,我可以将它们全部更改为全名。
谢谢谢谢谢谢你!答案 0 :(得分:1)
您不需要正则表达式,请使用对象state
Object.keys(state).forEach(k => str = str.replace(k, state[k]));
const state = { "NY": "New York" };
var str = "You live in NY";
Object.keys(state).forEach(k => str = str.replace(k, state[k]));
console.log(str);
使用正则表达式替换整组匹配项:
const state = { "NY": "New York" };
var str = "You live in NY and again in NY";
Object.keys(state).forEach(k => str = str.replace(new RegExp(`\\b${k}\\b`, 'g'), state[k]));
console.log(str);
答案 1 :(得分:1)
我们可以使用模板文字和地图它将返回一个数组,然后你可以做你想要的。
const state = {
"NY": "New York"
}
console.log(Object.keys(state).map(s => `You live in ${state[s]}`))
如果您打算与用户进行此操作,例如
const state = {
"NY": "New York"
}
const user = {
name: "joe",
state: "NY",
liveIn: () => `You live in ${state[user.state]}`
}
console.log(user.liveIn())
答案 2 :(得分:1)
如果您确定最后一个字是key
。然后,您可以通过以下方式跳过 foreach 。
const state = {
"NY": "New York"
}
var a = "You live in NY";
b = a.split(" ");
b = b[b.length - 1];
a.replace(b, state[b]);
Console.log(a);
<强>输出强>
"You live in New York"
答案 3 :(得分:1)
const states = {
"CA": "California",
"NY": "New York"
}
var input = "I'm from CA, thinking of moving to NY but not sure, I still really like CA."
var regexStr = Object.keys(states).join("|")
var statesRgx = new RegExp(`\\b(${regexStr})\\b`, 'g')
console.log(statesRgx)
function stateReplace(str){
return str.replace(statesRgx, val => states[val])
}
console.log(stateReplace(input))
&#13;