我想在二维数组中拆分字符串。
我的阵列就像这样:
var str = 'a) first sentence without fixed lenght b) second phrase c) bla bla bla'
我需要的返回数组就像:
var arr =[
[ 'a', 'first sentence without fixed lenght' ],
[ 'b', 'second phrase' ],
[ 'c', 'bla bla bla' ]
];
我考虑使用正则表达式来查找列表的索引,如下所示:
/\w\)\s/gi
然后拆分字符串,但没有成功。有人可以帮帮我吗?
答案 0 :(得分:1)
这是一个简单的方法:
var ray= 'a) first sentence without fixed lenght b) second phrase c) bla bla bla'
.split(/(\w)\) /)
.slice(1)
.map(function(a,b,c){if(b%2){ return [c[b-1],a] }})
.filter(Boolean);
alert(JSON.stringify(ray, null, "\t"));
/* shows:
[
[
"a",
"first sentence without fixed lenght "
],
[
"b",
"second phrase "
],
[
"c",
"bla bla bla"
]
]
*/
答案 1 :(得分:1)
好的,您可以通过拆分或匹配来完成此操作。我找到了一个不计数的解决方案)始终是一个分隔符。相反,我正在寻找一个非常特定的空白,字母,),空白在零长度前瞻中的模式。所以最常见的括号用法如“D”(耳语)“可以[D]匹配s)没有]。
var str = 'a) first sentence without fixed lenght b) second phrase c) bla bla bla';
var re = /(?=\s\w\)\s)/g;
var myArray = str.split(re);
var text;
var parenIndex;
// the result is = myArray[ 'a) first ...', 'b) second ... ', 'c) third ...' ];
for (var i = 0, il = myArray.length; i < il; i++) {
text = myArray[i];
parenIndex = text.indexOf(')'); // get first instance of )
myArray[i] = [ text.substring(0, parenIndex - 1), text.substring(parenIndex + 1) ];
}
// the result is = myArray[ ['a', 'first ...'], ['b', 'second ... '], ... ];
一种更简单,更不可靠的方法如下。它假设)始终是一个分隔符。
var str = 'a) first sentence without fixed lenght b) second phrase c) bla bla bla';
var re = /(?=\w\))|\)/g;
var myArray = str.split(re);
var newArray = new Array(myArray.length / 2);
for (var i = 0, il = myArray.length; i < il; i += 2) {
newArray[i / 2] = [ myArray[i], myArray[i + 1] ];
}