【问题标题】:Split string with inner and outer delimeters in Javascript在Javascript中使用内部和外部分隔符拆分字符串
【发布时间】:2011-02-24 05:59:50
【问题描述】:

在我的 Javascript 代码中,我有一个类似这样的字符串:

"1943[15]43[67]12[32]"

我想返回一个这样的数组:

["1","9","4","3","15","4","3","67","1", 2","32"]

也就是说,我希望它分隔每个字符,除了括号内的数字,我想将其保留为一个元素。

有没有优雅的方法来做到这一点?

【问题讨论】:

    标签: javascript string split delimiter


    【解决方案1】:
    var str = '1943[15]43[67]12[32]',
        matches = str.match(/\d|\[\d+\]/g);
    
    for (var i = 0, matchesLength = matches.length; i < matchesLength; i++) {
        matches[i] = matches[i].replace(/\D/g, '');
    };
    
    console.log(matches);
    // ["1", "9", "4", "3", "15", "4", "3", "67", "1", "2", "32"]
    

    jsFiddle.

    【讨论】:

    • 不,你没有错过什么,这是我的懒惰。我在编辑中修复了它。
    • @Peter 谢谢,希望这对你来说足够优雅。 :)
    • 是的。非常感谢,它有效。如果我有足够的代表投票给你,我会的。
    • @Peter 你总是可以给我绿色的大勾号:)
    【解决方案2】:
    var str = "1943[15]43[67]12[32]", 
        re = new RegExp(/(\d)|\[(\d+)\]/g), 
        out = [],
        m;
    
    while (m = re.exec(str)) { 
      out.push(m[2] || m[0]); 
    }
    
    console.log(out); // ["1", "9", "4", "3", "15", "4", "3", "67", "1", "2", "32"]
    

    【讨论】:

    • +1 我也喜欢这个解决方案。你有什么理由不使用\d 第二个|
    • 我想是坏习惯 :) 我刚刚改正了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    相关资源
    最近更新 更多