在字符串中配对字符有哪些优雅的方法?



例如,如果初始字符串s"0123456789",则期望的输出将是一个数组["01", "23", "45", "67", "89"]

寻找JavaScript中优雅的解决方案。

我的想法(非常不优雅)是通过在空字符串上分割并使用Array来迭代字符串。方法,并在每两个字符之后插入一个分隔符,然后按该分隔符分割。这是不是一个好的解决方案,但它是我的起点。

编辑: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})

使用两个连续字符作为分隔符进行分割(但由于它们在捕获组中,因此它们也是split结果的一部分)。使用identity函数进行过滤可以消除空字符串(在"分隔符"之间)。请注意,在奇数字符的情况下,最后一个字符将作为分隔符输出,而不是分隔符,但这无关紧要,因为它仍然会测试为真。

([^]是如何拼写.在javascript中,如果你真的想匹配任何字符。我得查一下

最新更新