首页 > 解决方案 > 在字符串中查找多次出现

问题描述

如果我有以下字符串,我如何搜索它并返回一个对象,其键由 {{ key }} 表示,值设置为附加到它的单词,如,不是!之间的空间。

我不明白如何在以 {{ ...has some name... 开头并以 }} 结尾的字符串中查找每个出现,因为它并不总是被称为一二三四,如下例所示。

例子:

"The quick {{one}}onyx goblin {{two}}jumps over the {{three}}lazy {{four}} dwarf"

obj={
  one:"onyx",
  two:"jumps",
  three:"lazy",
  four:NULL
}

请注意,{{four}} 是 NULL,因为它在单词 dwarf之前有一个空格。dward 这个词没有直接附加到 {{four}}

感谢您的帮助,谢谢。

标签: javascript

解决方案


这将起作用

const str = "The quick {{one}}onyx goblin {{two}}jumps over the {{three}}lazy {{four}} dwarf";
const result = {}

str.split("{{")
    .map(m => ({
        [m.split('}}')[0]]: m.includes("}}")
            && (m.split('}}')[1].split(' ')[0] || null)
    })).filter(e => e[Object.keys(e)[0]] != false).forEach(e => { result[Object.keys(e)[0]] = Object.values(e)[0] })
console.log("result", result)

推荐阅读