解析 react-mentions 包中的标记

问题描述

我正在使用“react-mentions”库来提及数据库中的名称。但是数据格式是一种奇怪的格式。现在我想以 json 格式制作它。这是我的代码

 <MentionsInput
                                                className="comments-textarea"
                                                placeholder=""
                                                value={this.state.value}
                                                onChange={this.handleChange}
                                                onSelect={this.handleSelection}
                                                onBlur={this.handleBlur}
                                                markup={this.state.markup}
                                                autoFocus
                                            >
                                                <Mention
                                                    className="comment-user"
                                                    type="user"
                                                    trigger="cli"
                                                    data={this.state.totalImageList}
                                       
                                                />
                                            </MentionsInput>

这是数据的onchange函数

handleChange(event,newValue) {
    this.setState({ value: newValue });
    console.log("got value",event.target.value)
}

我的 console.log 以这种格式显示数据:

@[bedrooom pic 5](dd246746-237f-4231-a9ae-df778a9634b4) @[bedrooom pic 4](f8c88c76-651f-4b45-83d4-8463ae76693c) @[bedrooom pic 5](dd246746-237f-4231-a9ae-df778a9634b4)

我想把它格式化成这样的数组:

{
    "id": "dd246746-237f-4231-a9ae-df778a9634b4","imageName":"bedroom pic 5 
   },

解决方法

这是我对转换它的看法,不过它可以提高性能

var mystr=`@[bedrooom pic 5](dd246746-237f-4231-a9ae-df778a9634b4) @[bedrooom pic 4](f8c88c76-651f-4b45-83d4-8463ae76693c) @[bedrooom pic 5](dd246746-237f-4231-a9ae-df778a9634b4)`
mystr=mystr.substring(1)
var arry=mystr.split(" @")
var returnArr=[]
var obj={}
for(var a of arry){
  var value=a.substring(
    a.lastIndexOf("[") + 1,a.lastIndexOf("]"))
  var key=a.substring(
    a.lastIndexOf("(") + 1,a.lastIndexOf(")"));
  obj[`imageName`]=value
  obj[`id`]=key
  returnArr.push(obj)
}
console.log(returnArr)