Javascript 如何将字符串拆分为多个子字符串(用[]括起来),并在子字符串中找到分隔符?
TLDR强> 在Javascript中,如何将这个字符串Javascript 如何将字符串拆分为多个子字符串(用[]括起来),并在子字符串中找到分隔符?,javascript,node.js,Javascript,Node.js,TLDR 在Javascript中,如何将这个字符串[test,string,0,5,bob,0,1],[age,number,1100,20,0,1],[male,const,0,0,yes,200,1]拆分为一个子字符串数组,每个子字符串以[]为界: [测试,字符串,0,5,bob,0,1],[年龄,数字,1100,20,0,1],[男性,常量,0,0,是,200,1] 上下文: 我需要使用NodeJS将配置文件中的行处理到数组中。 行是以下形式的字符串: someID,[test,stri
[test,string,0,5,bob,0,1],[age,number,1100,20,0,1],[male,const,0,0,yes,200,1]
拆分为一个子字符串数组,每个子字符串以[]
为界:
[测试,字符串,0,5,bob,0,1]
,[年龄,数字,1100,20,0,1]
,[男性,常量,0,0,是,200,1]
上下文:
我需要使用NodeJS将配置文件中的行处理到数组中。
行是以下形式的字符串:
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...
];
我可以使用line.split(',',1)[0]
从上面的配置行“someID”中获取第一项,但是如何将字符串的其余部分分离为由[
和]
绑定的子元素呢
我尝试了JS string.match():
但是我有一个字符串
"[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(“,”)显然会考虑每个逗号,并在所有逗号上拆分,而不仅仅是
[]
之外的逗号。我认为解决方案将是正则表达式?谢谢。您使用str.match(/\[(.*)\]/g)的方法非常好,只需要稍微调整一下。不要使用将匹配每个字符的*
,而应使用[^\]]
匹配除右括号外的每个字符
const str=“someID,[test,string,0,5,bob,0,1],[age,number,1100,20,0,1],[male,const,0,0,yes,200,1]”;
log(str.match(/\[^\]]+\]/g))
您使用str.match(/\[(.*\]/g)
的方法非常好,只需要稍微调整一下。不要使用将匹配每个字符的*
,而应使用[^\]]
匹配除右括号外的每个字符
const str=“someID,[test,string,0,5,bob,0,1],[age,number,1100,20,0,1],[male,const,0,0,yes,200,1]”;
console.log(str.match(/\[^\]]+\]/g))
如果..0,1],[ma…
中的空格是一个打字错误,则只需在]上拆分,[
,否则….split()
“理解”正则表达式如果..0,1],[ma…
中的空格是一个打字错误,则只需在],[
上拆分,否则….split正则表达式
"[test,string,0,5,bob,0,1]",
"[age,number,1,100,20,0,1]",
"[male,const,0,0,yes,200,1]",