我想分割二维数组中的字符串。
我的数组是这样的:
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
然后分割字符串,但没有成功。有人可以帮助我吗?
最佳答案
好的,您可以通过拆分或匹配来完成此操作。我寻求一个解决方案,不依赖 ) 始终作为分隔符。相反,我正在寻找零长度前瞻中非常具体的空白、字母、)、空白模式。因此,大多数可能使用的括号如“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] ];
}
关于Javascript 在二维数组中分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17459998/