38

私は次の文字列を持っています:

foofaafoofaafoofaafoofaafoofaa

10行の配列(つまり、3文字ごとに分割した場合)。これをインスタンス化すると、次のようになります。

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

そのため、組み込みまたはカスタムの関数が必要です。これは、文字列をn番目の文字ごとに分割するのに役立ちます。

4

6 に答える 6

79

以下のコードを試してください。

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

n番目の位置の場合:

foo.match(new RegExp('.{1,' + n + '}', 'g'));
于 2012-10-02T08:25:14.097 に答える
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/

于 2012-10-02T08:27:11.213 に答える
7

私がこれを書いているときに、@xdazzは素晴らしくシンプルな正規表現ソリューションを思いつきました。

しかし、あなたが(その回答へのコメントで)非正規表現の解決策を求めたので、とにかくこれを提出します...

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

于 2012-10-02T08:27:08.187 に答える
3

あなたはこのようにすることができます:

var input = "foofaafoofaafoofaafoofaafoofaa";

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

デモ: http: //jsfiddle.net/Guffa/yAZJ2/

于 2012-10-02T08:29:40.007 に答える
1

Mark Walterが指摘しているように、別のStackOverflowの質問からのこのソリューションは完全に機能します。

function splitStringAtInterval (string, interval) {
  var result = [];
  for (var i=0; i<string.length; i+=interval)
    result.push(string.substring (i, i+interval));
  return result;
}
于 2012-10-02T08:30:09.413 に答える
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));
于 2012-10-02T08:33:19.763 に答える