已知一个字符串,需要拆分成多维数组
已知的字符串
"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':'哥哥'
}
}
谢谢
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)