1

我找不到使用分隔符字符串拆分字符串的好方法,但将分隔符保留为结果数组的每个元素的前缀:

var s = 'blah0__blah1__blah2';

我需要得到

['blah0', '__blah1', '__blah2']

我能得到的最接近的东西是

s.split(/(__)/);

返回

['blah0', '__', 'blah1', '__', 'blah2']

但这我需要遍历以合并下划线。

有没有更好的办法?

编辑:

到目前为止,这是我最大的努力:

'blah__blah1__blah2'.split(/(__[^_]+)/)
// => ["blah", "__blah1", "", "__blah2", ""]

仍然,输出中有空字符串...

4

6 回答 6

2

这个怎么样:

var s = 'blah0__blah__blah'
var s_split = s.match(/(__)?(.(?!__))+./g)
console.log(s_split)

我很确定这比简单地重复和加入定期split.

If you replace __ with your separator it should work fine for most cases.

于 2013-07-30T13:41:17.787 回答
1

一个两步的过程。

var s = 'blah0__blah1__blah2';
var blahs = s.split('__');
var scoreBlahs = blahs.map(preScore);
alert(scoreBlahs);
function preScore(b) {
    var x;
    var result = x.concat('__',b);  
    return result; 
}
于 2013-07-30T13:35:25.530 回答
1
'blah0__blah1__blah2'.match(/^[^_]+|_+[^_]+/g);
["blah0", "__blah1", "__blah2"]

Seems to give you what you want. Though It may vary, if your input isn't exactly as you show it.

于 2013-07-30T13:46:01.053 回答
0

只需在分隔字符串后添加分隔符

var value = "a,b,c";
var splitter = value.split(",");
for(var i = 0; i < splitter.length; i++) {
    alert("," + splitter[i]);
    }
于 2013-07-30T13:29:57.203 回答
0

由于您知道分隔符 - 稍后再添加:

var s = 'blah0__blah1__blah2';
var sep = '__';
var arr = s.split(sep);
for (var i = 1; i < arr.length; i++) {
    arr[i] = sep + arr[i];
}

console.log(arr);
于 2013-07-30T13:31:30.363 回答
0

您可以插入一个辅助分隔符,并在其上拆分,保持原件完好无损。

var s = 'blah0__blah1__blah2';
s = s.replace('_', '_$');
s.split('$');
于 2013-07-30T13:41:07.713 回答