对多个单词使用 str.replace
Using str.replace for multiple words
我正在为记事本缩写创建一个工作工具。由于我工作的公司对下载任何外部工具有严格要求,因此我使用了基于记事本构建的 Javascript 和 HTML。
我已经能够替换单个单词,例如当我输入 "Vacancy" it returns "VAC" 时。或者在键入 "Payment" 时 returns "PYMT"。我的问题是试图将多个单词替换为 1 个小缩写。比如"Follow Up"我要return"F/U"。对于这些空间,我发现它不起作用。
尝试了多种方法,但无法解决这个问题。
这是我使用过的代码片段
function myFunction() {
var str = document.getElementById("demo").value;
var mapObj = {
Payment:"PYMT",
Vacancy:"VAC",
str = str.replace(/Payment|Vacancy, fucntion(matched){
return mapObj[matched];
});
alert(str);
document.getElementById("demo").value = res;
}
我想做的是添加我的 mabObj
所以它会显示
function myFunction() {
var str = document.getElementById("demo").value;
var mapObj = {
Follow Up:"F/U"
str = str.replace(/Follow Up|, fucntion(matched){
return mapObj[matched];
});
alert(str);
document.getElementById("demo").value = res;
}
要在对象中包含带有 space 的键,您可以将其放在方括号中,例如 {["Follow Up"]: "F/U"}
function replaceKeyWords(str) {
var mapObj = {
Payment:"PYMT",
Vacancy:"VAC",
["Follow Up"]:"F/U",
};
str = str.replace(/(Payment|Vacancy|Follow Up)/, function(matched){
return mapObj[matched];
});
return str;
}
console.log(replaceKeyWords("Payment"));
console.log(replaceKeyWords("Vacancy"));
console.log(replaceKeyWords("Follow Up"));
JavaScript 对象可以具有包含空格的属性,但为了做到这一点,属性 名称需要用引号引起来。
也就是说,我建议在这种情况下使用 Map
,因为它可以让您匹配任何字符串,而不必担心与对象原型中的属性发生命名冲突。
const abbreviation = new Map([
['Follow Up', 'F/U'],
['Payment', 'PYMT'],
['Vacancy', 'VAC']
]);
const input = 'Payment noise Vacancy noise Follow Up noise Vacancy';
const pattern = new RegExp(Array.from(abbreviation.keys()).join('|'),'g');
const result = input.replace(pattern, (matched) => {
return abbreviation.get(matched) || matched;
});
console.log(result); // 'PYMT noise VAC noise F/U noise VAC'
我正在为记事本缩写创建一个工作工具。由于我工作的公司对下载任何外部工具有严格要求,因此我使用了基于记事本构建的 Javascript 和 HTML。
我已经能够替换单个单词,例如当我输入 "Vacancy" it returns "VAC" 时。或者在键入 "Payment" 时 returns "PYMT"。我的问题是试图将多个单词替换为 1 个小缩写。比如"Follow Up"我要return"F/U"。对于这些空间,我发现它不起作用。
尝试了多种方法,但无法解决这个问题。
这是我使用过的代码片段
function myFunction() {
var str = document.getElementById("demo").value;
var mapObj = {
Payment:"PYMT",
Vacancy:"VAC",
str = str.replace(/Payment|Vacancy, fucntion(matched){
return mapObj[matched];
});
alert(str);
document.getElementById("demo").value = res;
}
我想做的是添加我的 mabObj 所以它会显示
function myFunction() {
var str = document.getElementById("demo").value;
var mapObj = {
Follow Up:"F/U"
str = str.replace(/Follow Up|, fucntion(matched){
return mapObj[matched];
});
alert(str);
document.getElementById("demo").value = res;
}
要在对象中包含带有 space 的键,您可以将其放在方括号中,例如 {["Follow Up"]: "F/U"}
function replaceKeyWords(str) {
var mapObj = {
Payment:"PYMT",
Vacancy:"VAC",
["Follow Up"]:"F/U",
};
str = str.replace(/(Payment|Vacancy|Follow Up)/, function(matched){
return mapObj[matched];
});
return str;
}
console.log(replaceKeyWords("Payment"));
console.log(replaceKeyWords("Vacancy"));
console.log(replaceKeyWords("Follow Up"));
JavaScript 对象可以具有包含空格的属性,但为了做到这一点,属性 名称需要用引号引起来。
也就是说,我建议在这种情况下使用 Map
,因为它可以让您匹配任何字符串,而不必担心与对象原型中的属性发生命名冲突。
const abbreviation = new Map([
['Follow Up', 'F/U'],
['Payment', 'PYMT'],
['Vacancy', 'VAC']
]);
const input = 'Payment noise Vacancy noise Follow Up noise Vacancy';
const pattern = new RegExp(Array.from(abbreviation.keys()).join('|'),'g');
const result = input.replace(pattern, (matched) => {
return abbreviation.get(matched) || matched;
});
console.log(result); // 'PYMT noise VAC noise F/U noise VAC'