2014-01-28 121 views
0

我需要用分隔符分隔字符串,以便它变成2个数组。 以下是字符串"55,56,*,51,52"的示例。基于分隔符的分割字符串javascript正则表达式

我想[["55","56],["51","52"]] 落得我在JavaScript的分裂()线索没有利用 - 我相信我需要一个正则表达式的解决方案,我不知道该怎么办。

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

这可能吗?

谢谢。

回答

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

我尝试这样做时出现错误:SyntaxError:意外的标记*。我没有正确指定分隔符吗? – user1700933

+0

我忘了括号。我编辑了我的答案 – gtournie

+0

这很好,比第一个答案短,这也很好。谢谢! – user1700933

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"]] 

然后,它会与各地星号逗号工作。

+0

你也可以只使用正则表达式来寻找一个','无论是在开始或结束字符串,并删除它。 – tenub

+0

如果拆分方法需要一个正则表达式,那么这些逗号可以在第一次拆分时用',?\ *,?' – sln

+0

或者非正则表达式',*,'如果OP确定它始终是那种形式。 – sln

相关问题