【问题标题】:split string based on delimiter javascript regex基于分隔符javascript正则表达式拆分字符串
【发布时间】:2014-01-28 18:58:56
【问题描述】:

我需要用分隔符分割一个字符串,使它变成 2 个数组。 这是字符串"55,56,*,51,52" 的示例。

我想以[["55","56],["51","52"]] 结尾 我在 javascript 中尝试使用 split() 无济于事- 我相信我需要一个正则表达式解决方案,但我不知道该怎么做。

如果要处理的字符串看起来像这样",*,51,52" 它应该返回 [[],["51,"52"]]
如果它看起来像 "51,*," 它应该返回 [["51"],[]]
",*," 应该返回 [[],[]] -

这可能吗?

谢谢。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    您可以通过string.split 方法做到这一点:

    var str = "55,56,*,51,52".split('*');
    for (var i=0;i<str.length;i++) str[i] = str[i].split(',');
    //str now contains [["55", "56", ""], ["", "51", "52"]]
    

    您可以将字符串更改为"55,56*51,52" 以获得[["55","56],["51","52"]] 的结果。

    或者,你也可以稍微长一点:

    var str = "55,56,*,51,52".split('*');
    for (var i=0;i<str.length;i++) {
        str[i] = str[i].split(',');
        for (var n=0;n<str[i].length;n++)
            !str[i][n] && str[i].splice(n,1);
    }
    //str now contains [["55","56],["51","52"]]
    

    然后它将与星号周围的逗号一起使用。

    【讨论】:

    • 您也可以使用正则表达式在字符串的开头或结尾查找 , 并将其删除。
    • 如果拆分方法将采用正则表达式,则可以在第一次拆分时使用,?\*,? 去除这些逗号
    • 或非正则表达式 ,*, 如果 OP 确定它始终是这种形式。
    【解决方案2】:

    这是一个不使用拆分的较短版本:

    function twoArrays(str) {
      return JSON.parse(("[[" + str + "]]").replace(/,\*,/g, "],["));
    }
    
    // Examples:
    twoArrays("55,56,*,51,52") // => [[55,56],[51,52]]
    twoArrays("55,56,*,")      // => [[55,56],[]]
    twoArrays(",*,")           // => [[],[]]
    

    【讨论】:

    • 尝试此操作时出现错误: SyntaxError: Unexpected token * 。我没有正确指定分隔符吗?
    • 这很好用,比第一个答案短,也很好用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2021-10-25
    • 2012-08-13
    相关资源
    最近更新 更多