给定形式的字符串:
'"abc",ab(),c(d(),e()),f(g(),zyx),h(123)'
如何拆分它以获得以下数组格式:
abc
ab()
c(d(),e())
f(g(),zyx)
h(123)
我已经尝试过普通的 javascript 拆分,但是它不能按预期工作。尝试正则表达式但尚未成功。
最佳答案
您可以跟踪括号,并在左右括号相等时添加这些表达式。
例如-
function splitNoParen(s){
var left= 0, right= 0, A= [],
M= s.match(/([^()]+)|([()])/g), L= M.length, next, str= '';
for(var i= 0; i<L; i++){
next= M[i];
if(next=== '(')++left;
else if(next=== ')')++right;
if(left!== 0){
str+= next;
if(left=== right){
A[A.length-1]+=str;
left= right= 0;
str= '';
}
}
else A=A.concat(next.match(/([^,]+)/g));
}
return A;
}
var s1= '"abc",ab(),c(d(),e()),f(g(),zyx),h(123)';
splitNoParen(s1).join('\n');
/* returned value: (String)
"abc"
ab()
c(d(),e())
f(g(),zyx)
h(123)
*/
关于Javascript:用逗号分割字符串,括号内除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25058134/