我找不到使用分隔符字符串拆分字符串的好方法,但是将分隔符保留为结果数组的每个元素的前缀:
这
var s = 'blah0__blah1__blah2';
我需要
['blah0', '__blah1', '__blah2']
我能得到的最接近的是
s.split(/(__)/);
返回
['blah0', '__', 'blah1', '__', 'blah2']
但是我需要遍历以合并下划线。
有更好的方法吗?
编辑:
这是我迄今为止的最大努力:
'blah__blah1__blah2'.split(/(__[^_]+)/)
// => ["blah", "__blah1", "", "__blah2", ""]
仍然,输出中有空字符串......
答案 0 :(得分:2)
这个怎么样:
var s = 'blah0__blah__blah'
var s_split = s.match(/(__)?(.(?!__))+./g)
console.log(s_split)
我很确定它比仅仅在常规split
之后重复和加入要贵得多(时间和记忆力)。
如果您使用分隔符替换__
,则在大多数情况下都可以正常使用。
答案 1 :(得分: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;
}
答案 2 :(得分:1)
'blah0__blah1__blah2'.match(/^[^_]+|_+[^_]+/g);
["blah0", "__blah1", "__blah2"]
似乎能给你你想要的东西。虽然它可能会有所不同,但如果您的输入与您显示的不完全相同。
答案 3 :(得分:0)
在分隔字符串
后,只需添加分隔符var value = "a,b,c";
var splitter = value.split(",");
for(var i = 0; i < splitter.length; i++) {
alert("," + splitter[i]);
}
答案 4 :(得分: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);
答案 5 :(得分:0)
您可以插入辅助分隔符,然后拆分,保留原始分隔符。
var s = 'blah0__blah1__blah2';
s = s.replace('_', '_$');
s.split('$');