Javascript:用逗号分割字符串,括号内除外

标签 javascript parsing

给定形式的字符串:

'"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/

相关文章:

javascript - 网站关闭页面后如何显示通知?

javascript - 为什么我的全局变量在我的 javascript 文件的缩小版本中未定义?

java - 使用 Jsoup 从 HTML 标签中逐一提取文本

java - 将一串数字从已解析字符串的一部分更改为 int

jquery - 为什么需要JSON解析?

javascript - 更改页面中的所有文本节点

javascript - 如何使用一个代码库在线和离线访问 HTML5/JS 应用程序中的数据库?

Javascript Promise.all - 如何处理所有错误

java - 使用 Jackson 解析以数字为键的 JSON 数组?

python - 通过Python解析URL