21

文字列を固定長 ( Nなど)に分割したいと思います。もちろん、元の文字列の長さがNの倍数でない場合、最後の部分は短くなる可能性があります。

それを行うための最速の方法が必要ですが、最も簡単に書くこともできます。私が今まで行ってきた方法は次のとおりです。

var a = 'aaaabbbbccccee';
var b = [];
for(var i = 4; i < a.length; i += 4){ // length 4, for example
    b.push(a.slice(i-4, i));
}
b.push(a.slice(a.length - (4 - a.length % 4))); // last fragment

私がやりたいことをするためのより良い方法がなければならないと思います。しかし、追加のモジュールやライブラリーは必要ありません。可能であれば単純な JavaScript だけが必要です。

質問する前に、他の言語を使用してこの問題を解決するいくつかの解決策を見てきましたが、それらは JavaScript を念頭に置いて設計されていません。

4

3 に答える 3

40

これを試すことができます:

var a = 'aaaabbbbccccee';
var b = a.match(/(.{1,4})/g);
于 2012-05-06T23:12:56.007 に答える
8

この関連する質問を参照ください

最初の (遅い) リンク:

[].concat.apply([],
    a.split('').map(function(x,i){ return i%4 ? [] : a.slice(i,i+4) })
)

文字列プロトタイプとして:

String.prototype.chunk = function(size) {
    return [].concat.apply([],
        this.split('').map(function(x,i){ return i%size ? [] : this.slice(i,i+size) }, this)
    )
}

デモ:

> '123412341234123412'.chunk(4)
["1234", "1234", "1234", "1234", "12"]
于 2012-05-06T23:17:51.307 に答える