在 react-mentions 包中解析标记

Posted

技术标签:

【中文标题】在 react-mentions 包中解析标记【英文标题】:parsing markup in react-mentions package 【发布时间】:2021-06-19 22:38:00 【问题描述】:

我正在使用“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 
   ,

【问题讨论】:

【参考方案1】:

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

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)

【讨论】:

以上是关于在 react-mentions 包中解析标记的主要内容,如果未能解决你的问题,请参考以下文章

如何解析 .apk 包中的 AndroidManifest.xml 文件

自定义协议解析组包中,大小端问题如何处理?

浩哥解析MyBatis源码——Parsing解析模块之通用标记解析器(GenericTokenParser)与标记处理器(TokenHandler)

使用 SAX 解析器解析自关闭 XML 标记时遇到问题

嵌套的Angular模块:无法解析npm包中的服务

SBT中已发布的程序集包中的未解析依赖项