Javascript:用逗号分隔字符串,括号内除外 [英] Javascript: Split a string by comma, except inside parentheses

查看:555
本文介绍了Javascript:用逗号分隔字符串,括号内除外的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在表格中给出字符串:

'"abc",ab(),c(d(),e()),f(g(),zyx),h(123)'

我如何拆分它得到以下数组格式:

How can I split it to get the below array format:

abc
ab()
c(d(),e())
f(g(),zyx)
h(123)

我尝试过普通的javascript拆分,但它不能按预期工作。尝试使用正则表达式但尚未成功。

I have tried normal javascript split, however it doesn't work as desired. Trying Regular Expression but not yet successful.

推荐答案

您可以跟踪括号,并在左右两侧添加这些表达式parens equalize。

You can keep track of the parentheses, and add those expressions when the left and right parens equalize.

例如 -

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:用逗号分隔字符串,括号内除外的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆