基于分隔符javascript正则表达式拆分字符串

时间:2014-01-28 18:58:56

标签: javascript regex

我需要通过分隔符拆分字符串,使其成为2个数组。 以下是字符串"55,56,*,51,52"的示例。

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

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

这可能吗?

感谢。

2 个答案:

答案 0 :(得分:2)

您可以通过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"]]

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

答案 1 :(得分:0)

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

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(",*,")           // => [[],[]]