javascript - 对多个单词使用 str.replace

标签 javascript string replace str-replace

我正在创建一个用于记事本缩写的工作工具。由于我工作的公司对下载任何外部工具都非常严格,所以我不得不使用基于记事本构建的 Javascript 和 HTML。

我已经能够替换单个单词,例如当我输入“Vacancy”时,它会返回“VAC”。或者,当输入“付款”时,它会返回“PYMT”。我的问题是尝试将多个单词替换为 1 个小缩写。例如“Follow Up”我想返回“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;
}

最佳答案

JavaScript 对象可以具有带空格的属性,但为此,属性名称需要用引号引起来。

也就是说,我建议在这种情况下使用 Map,因为它允许您匹配任何字符串,而不必担心与对象原型(prototype)中的属性发生命名冲突。

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 - 对多个单词使用 str.replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58141482/

相关文章:

ruby-on-rails - 如何检查字符串是否为有效日期

javascript - 用 & 字符替换搜索输入框中的所有空格

java - 如果字符是 0 到 8 之间的数字,则将其增加 1(其他字符不变)

javascript - 如何将嵌套对象转换为数组的数组

c# - 在长字符串中查找所有以@@开头并以@@结尾的单词

javascript - 当 setInterval() 运行另一个函数时,一个有效的函数突然变为 "not a function"

java - java中的字符串数据类型

java - 用空格替换转义字符

javascript - 在全日历事件工具提示中不可见

javascript - HTML 重命名下载链接