什么是在字符串中配对字符的优雅方法?

时间:2013-04-15 02:13:49

标签: javascript string algorithm

例如,如果初始字符串s"0123456789",则所需的输出将为数组["01", "23", "45", "67", "89"]

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

我在想(非常不优雅)是通过拆分空字符串并使用Array.forEach方法迭代字符串,并在每两个字符后插入一个分隔符,然后由该分隔符拆分。这不是是一个很好的解决方案,但这是我的出发点。

编辑:已发布RegExp解决方案。我很想知道是否还有其他办法。

2 个答案:

答案 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中拼写.的方法,如果你真的想要匹配任何角色。我必须查看它。)