使用JavaScript在每个第n个位置拆分一个字符串?

时间:2012-10-02 08:20:03

标签: javascript string

我有以下字符串:

foofaafoofaafoofaafoofaafoofaa

一个包含10行的数组(如果我按每个第3个字符分割,就是这样),看起来像这样,如果我要实例化它:

var fooarray = new Array ('foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa');

所以我想要一个内置或定制的函数,它可以帮助我按每个第n个字符分割一个字符串。

6 个答案:

答案 0 :(得分:60)

请尝试以下代码:

var foo = "foofaafoofaafoofaafoofaafoofaa";
console.log( foo.match(/.{1,3}/g) );

第n位:

foo.match(new RegExp('.{1,' + n + '}', 'g'));

答案 1 :(得分:11)



var s = "foofaafoofaafoofaafoofaafoofaa";
var a = [];
var i = 3;

do{ a.push(s.substring(0, i)) } 
while( (s = s.substring(i, s.length)) != "" );

console.log( a )




打印:

foo,faa,foo,faa,foo,faa,foo,faa,foo,faa

工作演示:http://jsfiddle.net/9RXTW/

答案 2 :(得分:5)

在我写这篇文章时,@ xdazz提出了非常简单的正则表达式解决方案。

正如您针对非正则表达式解决方案提出的问题(对该答案的评论),无论如何我都会提交此...

function splitNChars(txt, num) {
  var result = [];
  for (var i = 0; i < txt.length; i += num) {
    result.push(txt.substr(i, num));
  }
  return result;
}

splitNChars("foofaafoofaafoofaafoofaafoofaa",3);

JSFiddle Demo

答案 3 :(得分:2)

你可以这样做:

var input = "foofaafoofaafoofaafoofaafoofaa";

var result = [];
while (input.length) {
    result.push(input.substr(0, 3));
    input = input.substr(3);
}

演示:http://jsfiddle.net/Guffa/yAZJ2/

答案 4 :(得分:1)

正如Mark Walter指出的那样,another Stack Overflow question的解决方案完美无缺:

function splitStringAtInterval (string, interval) {
  var result = [];
  for (var i=0; i<string.length; i+=interval)
    result.push(string.substring (i, i+interval));
  return result;
}

答案 5 :(得分:0)

该函数后跟一个使用它的示例。示例测试输出:["abc","def","ghi","j"]

function splitEvery(str, n)
{
    var arr = new Array;
    for (var i = 0; i < str.length; i += n)
    {
        arr.push(str.substr(i, n));
    }
    return arr;
}

var result = splitEvery('abcdefghij', 3);
document.write(JSON.stringify(result));