APP比比 2022-11-20 02:41 采纳率: 100%
浏览 5
已结题

已知一个字符串,需要拆分成多维数组并替换内容

已知一个字符串,需要拆分成多维数组

已知的字符串

"content": "评论测试^[表情:开心]^[(196)名片:哥哥]"

已知的表情对应数组

emoji:[{
    'label':'开心',
    'img':'https://xxxxxxx1.jpg'
  },
  {
    'label':'难过',
    'img':'https://xxxxxxx2.jpg'
  },
  ...
]

需要正则和查找emoji并输入如下对象

"content": {
  'text':'评论测试',
  'emoji':{
    'label':'开心',
    'img':'https://xxxxxxx1.jpg'
  },
  'card':{
    'id':'196',
    'name':'哥哥'
  }
}

谢谢

  • 写回答

1条回答 默认 最新

  • 游一游走一走 2022-11-20 10:24
    关注
    const data = '评论测试^[表情:开心]^[(196)名片:哥哥]'
    const emoji = [{
        'label': '开心',
        'img': 'https://xxxxxxx1.jpg'
    },
        {
            'label': '难过',
            'img': 'https://xxxxxxx2.jpg'
        },
    ]
    
    let emojiRegExp = new RegExp(/\[表情:(.*)\]/)
    let cardRegExp = new RegExp(/\[\((\d*)\)名片:(.*)\]/)
    const result = data.split(/(\^\[.*?\])/g).filter(item => item !== '').reduce((t, i) => {
        if (emojiRegExp.test(i)) {
            t.emoji = emoji.find(item => item.label == emojiRegExp.exec(i)[1])
        } else if (cardRegExp.test(i)) {
            let cardTemp = cardRegExp.exec(i);
            t.card = {id: cardTemp[1], name: cardTemp[2]}
        } else {
            t.text = i
        }
        return t;
    }, {});
    console.log(result)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 赞助了问题酬金15元 11月20日
  • 创建了问题 11月20日