Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是优雅的方式来配对字符串中的字符?_Javascript_String_Algorithm - Fatal编程技术网

Javascript 什么是优雅的方式来配对字符串中的字符?

Javascript 什么是优雅的方式来配对字符串中的字符?,javascript,string,algorithm,Javascript,String,Algorithm,例如,如果初始字符串s是“0123456789”,则所需的输出将是数组[“01”、“23”、“45”、“67”、“89”] 在JavaScript中寻找优雅的解决方案 我的想法(非常不优雅)是通过拆分空字符串并使用Array.forEach方法来迭代字符串,并在每两个字符后插入一个delimeter,然后按delimeter拆分。这不是一个好的解决方案,但这是我的出发点 编辑:已发布RegExp解决方案。我想看看是否还有其他方法。怎么样: var array = ("0123456789").m

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

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

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

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

怎么样:

var array = ("0123456789").match(/\w{1,2}/g);
在这里,我们使用字符串匹配任意两个或单个(
{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();
String.prototype.getPairs=function()
{
var对=[];
对于(变量i=0;i
如果要使用拆分(以及为什么不使用),可以执行以下操作:

s.split(/([^][^])/).filter(function(x){return x})
使用两个连续字符作为分隔符进行拆分(但由于它们位于捕获组中,因此它们也是拆分结果的一部分。使用identity函数对其进行过滤可消除空字符串(在“分隔符”之间)。请注意,在奇数个字符的情况下,最后一个字符将作为拆分输出,而不是分隔符,但这并不重要,因为它仍将测试truthy


[^]
是在javascript中拼写
的方式,如果你真的想匹配任何字符,我必须查一下。)

呃,底层选民愿意解释原因吗?虽然这不是一个坏问题,但要求代码完成一项任务,而不证明你已经尝试了一些你有问题或你认为可以更优雅地解决的东西,这通常是不被接受的,因为它散发着给我一些codez问题的味道。你应该是一个我知道这听起来像是一个家庭作业帮助问题,但我刚刚读到关于字符串操作的内容,这个问题突然出现在我的脑海中。我将用我的一些初始id更新这个问题eas.添加了一个非正则表达式的答案。你能详细解释一下吗?这是一个正则表达式。\w匹配数字、单词、字符、空格-{2}告诉它重复此搜索两次-/g是一个全局标志,告诉它从搜索中创建一个包含所有匹配结果的数组感谢Marty,这是一个非常好的解决方案。一个警告是,对于奇数长度字符串,最后一个字符丢失。这肯定不是预先规定的要求,但需要记住。例如:
“012345678”。匹配(/\w{2}/g);//[“01”、“23”、“45”、“67”]
我将更新我的答案,以包括对剩余字符的兼容性。