javascript - 替换字符串中的多次出现

标签 javascript

我想用自定义字符替换用户输入的一些单词。字符串将是这样的

var userInput = "five plus five equal to ten multiply 5";

这是我想做的

const punctLists = {
        name: 'star',
        tag: '*'
    },
    {
        name: 'bracket',
        tag: ')'
    }, {
        name: 'multiply',
        tag: '*'
    }, {
        name: 'plus',
        tag: '+'
    }, {
        name: 'double equals',
        tag: '=='
    }, {
        name: 'equal',
        tag: '='
    }]
var matchPunction = punctLists.find(tag => tag.name == userInput);
if (matchPunction) {
    userInput = matchPunction.tag;
}

但它不起作用。 我想要这样的东西:

var userInput = "5+5 = 10*5";

有什么想法吗?

最佳答案

var userInput = "five plus five equal to ten multiply 5";

const punctLists = [
  { name: "star", tag: "*" },
  { name: "bracket", tag: ")" },
  { name: "multiply", tag: "*" },
  { name: "plus", tag: "+" },
  { name: "double equals", tag: "==" },
  { name: "equal", tag: "=" },
  { name: "five", tag: "5" },
  { name: "ten", tag: "10" }
];

console.log(userInput
    .split(' ')
    .map(x => (f = punctLists.find(item => item.name == x)) && f.tag || x)
    .join(' '))

关于javascript - 替换字符串中的多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56771245/

相关文章:

javascript - 如何验证在框周围移动的可拖动文本?

javascript - 如何计算接近无穷大或 0 的极限?

javascript - 克隆一个 div 并替换子元素

javascript - 为什么 fillRect 命令不允许创建命中区域,而 rect 和 fill 的组合却可以?

javascript - Angular 2.0 迁移路径

javascript - 如何使用可变版本参数(可变参数)创建外部javascript链接

javascript - React JS 哪个按钮被点击了多少次?

javascript - 如何在 Meteor 中触发的事件上插入元素?

javascript - 如何存储点击的超链接的URL

javascript - Angular 2 可观察到的问题