为了账号安全,请及时绑定邮箱和手机立即绑定

如何将字符串拆分为多个用 [ ] 括起来的子字符串,并且在子字符串中还可以找到分隔符?

如何将字符串拆分为多个用 [ ] 括起来的子字符串,并且在子字符串中还可以找到分隔符?

慕的地6264312 2021-10-14 15:52:42
在 Javascript 中,我如何将此字符串拆分[test,string,0,5,bob,0,1],[age,number,1,100,20,0,1], [male,const,0,0,yes,200,1]为一个子字符串数组,每个子字符串由[]以下各项限定:[test,string,0,5,bob,0,1], [age,number,1,100,20,0,1],[male,const,0,0,yes,200,1]语境:我需要使用 Node JS 将配置文件中的行处理为数组。一行是以下形式的字符串:someID,[test,string,0,5,bob,0,1],[age,number,1,100,20,0,1],[male,const,0,0,yes,200,1]这需要最终作为数组中的一个元素:var config = [// One line from the config file:['someID', ['test','string',0,5,'bob',0,1],[12,'number',1,100,20,0,1],['male','const',0,0,'yes',200,1]],// more elements each representing a line...];我可以使用上面的“someID”从配置行中获取第一项,line.split(',',1)[0]但是如何将字符串的其余部分分成由[和绑定的子元素] ?我试过 JS string.match() :var elements = str.match(/\[(.*)\]/g);但我得到了一个字符串"[test,string,0,5,bob,0,1],[age,number,1,100,20,0,1], [male,const,0,0,yes,200,1]"(我意识到这是因为它只与第一个[和最后一个匹配],而不处理其间的所有内容)而不是具有单独字符串的数组:"[test,string,0,5,bob,0,1]","[age,number,1,100,20,0,1]","[male,const,0,0,yes,200,1]",JS .split(',') 显然将每个逗号都考虑在内,并在所有逗号上进行拆分,而不仅仅是 .split(',') 之外的逗号[]。我认为解决方案将是正则表达式?谢谢。
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

您使用的str.match(/\[(.*)\]/g)方法非常好,只需稍作调整即可。而不是使用.*which 将匹配每个字符,您应该使用它[^\]]来匹配除右括号之外的每个字符。


const str = "someID,[test,string,0,5,bob,0,1],[age,number,1,100,20,0,1],[male,const,0,0,yes,200,1]";


console.log(str.match(/\[[^\]]+\]/g))

  • \[ 匹配左括号

  • [^] 匹配不在此集合中的所有字符

  • [^\]] 匹配所有字符 execpt ]

  • [^\]]+ 匹配一个或多个不匹配的字符 ]

  • \] 匹配右括号


查看完整回答
反对 回复 2021-10-14
  • 1 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信