我有一个动态形成的字符串,比如 -part1.abc.part2.abc.part3.abc
长度未知
在这个字符串中,我想根据第二次出现的“。”来获取子字符串。这样我就可以得到 and part1.abc
part2.abc
part3.abc
。
如果字符串像 - part1.abc.part2.abc.part3.abc.part4
输出必须像part1.abc
part2.abc
part3.abc
part4
如何得到这个?
我有一个动态形成的字符串,比如 -part1.abc.part2.abc.part3.abc
长度未知
在这个字符串中,我想根据第二次出现的“。”来获取子字符串。这样我就可以得到 and part1.abc
part2.abc
part3.abc
。
如果字符串像 - part1.abc.part2.abc.part3.abc.part4
输出必须像part1.abc
part2.abc
part3.abc
part4
如何得到这个?
像这样的东西:
str="part1.abc.part2.abc.part3.abc.part4"
temp=str.split('.');
out=[]
for(i=0; i<temp.length;i=i+2)
out.push(temp.slice(i,i+2).join('.'));
//["part1.abc", "part2.abc", "part3.abc", "part4"]
正如我在评论中所建议的,最简单(也是最快)的方法是使用正则表达式并匹配:
// ['part1.abc', 'part2.abc', 'part3.abc', 'part4']
'part1.abc.part2.abc.part3.abc.part4'.match(/[^.]+(\.[^.]+)?/g);
简单的功能,允许您指定要连接在一起的项目数和可用于连接它们的分隔符。
var concatBy = function(list, delimiter, by) {
var result = [];
for (var i = 0; i < list.length; i += by) {
result.push(list.slice(i, i + by).join(delimiter))
}
return result;
}
concatBy('part1.abc.part2.abc.part3.abc'.split('.'), '.', 2) // returns concatBy('part1.abc.part2.abc.part3.abc.part4'.split('.'), '.', 2)
concatBy('part1.abc.part2.abc.part3.abc.part4'.split('.'), '.', 2) // returns ["part1.abc", "part2.abc", "part3.abc", "part4"]