例如,如果初始字符串s
是"0123456789"
,则所需的输出将是一个数组["01", "23", "45", "67", "89"]
。
在 JavaScript 中寻找优雅的解决方案。
我在想(非常不优雅)是通过拆分空字符串并使用 Array.forEach 方法来遍历字符串,并在每两个字符后插入一个分隔符,然后按该分隔符拆分。这不是一个好的解决方案,但这是我的起点。
编辑:已发布 RegExp 解决方案。我很想看看是否还有其他方法。
例如,如果初始字符串s
是"0123456789"
,则所需的输出将是一个数组["01", "23", "45", "67", "89"]
。
在 JavaScript 中寻找优雅的解决方案。
我在想(非常不优雅)是通过拆分空字符串并使用 Array.forEach 方法来遍历字符串,并在每两个字符后插入一个分隔符,然后按该分隔符拆分。这不是一个好的解决方案,但这是我的起点。
编辑:已发布 RegExp 解决方案。我很想看看是否还有其他方法。
怎么样:
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();
如果您想使用拆分(为什么不),您可以执行以下操作:
s.split(/([^][^])/).filter(function(x){return x})
哪个使用两个连续字符作为分隔符进行拆分(但因为它们在捕获组中,所以它们也是拆分结果的一部分。使用标识函数过滤它可以消除空字符串(在“分隔符”之间)。注意在奇数个字符的情况下,最后一个字符将作为拆分输出,而不是分隔符,但这没关系,因为它仍然会测试真实性。
(如果你真的想匹配任何字符,你[^]
是如何.
用 javascript 拼写的。我必须查一下。)