Подтвердить что ты не робот

Разделить строку, на каждой n-й позиции, с помощью JavaScript?

У меня есть следующая строка:

foofaafoofaafoofaafoofaafoofaa

Массив с 10 строками (если я разделяю каждый третий символ, то есть), который выглядит примерно так, если я должен его создать:

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

Итак, я хочу функцию, встроенную или выполненную на заказ, которая может помочь мне разделить строку на каждый n-й символ.

4b9b3361

Ответ 1

Попробуйте приведенный ниже код:

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

Ответ 2

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 )

Ответ 3

Как я писал это, @xdazz придумал удивительно простое решение регулярных выражений.

Как вы просили (om комментарии к этому ответу) для решения без регулярных выражений, я все равно отправлю его...

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

Ответ 4

Вы можете сделать следующее:

var input = "foofaafoofaafoofaafoofaafoofaa";

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

Демо: http://jsfiddle.net/Guffa/yAZJ2/

Ответ 5

Как отметил Марк Уолтер, это решение из другого вопроса о переполнении стека отлично работает:

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

Ответ 6

Функция, за которой следует пример использования. Примеры тестовых выходов: ["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));