例如,如果初始字符串s
为"0123456789"
,则所需的输出将为数组["01", "23", "45", "67", "89"]
。
在JavaScript中寻找优雅的解决方案。
我在想(非常不优雅)是通过拆分空字符串并使用Array.forEach方法迭代字符串,并在每两个字符后插入一个分隔符,然后由该分隔符拆分。这不是是一个很好的解决方案,但这是我的出发点。
编辑:已发布RegExp解决方案。我很想知道是否还有其他办法。
答案 0 :(得分:6)
怎么样:
var array = ("0123456789").match(/\w{1,2}/g);
我们在字符串中使用.match()
来匹配任何两个或单个({1,2}
)字符(\w
)并返回结果数组。
关于编辑非正则表达式解决方案;你可以做一个不那么优雅的功能:
String.prototype.getPairs = function()
{
var pairs = [];
for(var i = 0; i < this.length; i += 2)
{
pairs[pairs.length] = this.substr(i, 2);
}
return pairs;
}
var array = ("01234567890").getPairs();
答案 1 :(得分:2)
如果您想使用split(以及为什么不使用),您可以执行以下操作:
s.split(/([^][^])/).filter(function(x){return x})
使用两个连续字符作为分隔符进行拆分(但是因为它们位于捕获组中,它们也是分割结果的一部分。使用标识函数过滤它可以消除空字符串(在“分隔符”之间)。请注意,在奇数个字符的情况下,最后一个字符将作为分割输出,而不是分隔符,但它无关紧要,因为它仍将测试真实。
([^]
是你在javascript中拼写.
的方法,如果你真的想要匹配任何角色。我必须查看它。)