1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptで大きな文字列をn個のチャンクに分割する。

2022-04-03 23:34:09

質問

非常に大きな文字列(例えば10,000文字)をN個の大きさの塊に分割したい。

これを行うには、パフォーマンスの面でどのような方法が最適でしょうか?

例えば "1234567890" を 2 で分割すると、次のようになります。 ["12", "34", "56", "78", "90"] .

を使えば、こんなことができるのでしょうか? String.prototype.match また、その場合、パフォーマンスの点から見て、その方法が最適なのでしょうか?

どのように解決するのですか?

次のような方法があります。

"1234567890".match(/.{1,2}/g);
// Results in:
["12", "34", "56", "78", "90"]

このメソッドは、サイズがチャンクサイズの正確な倍数でない文字列でも機能します。

"123456789".match(/.{1,2}/g);
// Results in:
["12", "34", "56", "78", "9"]

一般に、文字列のうち、最も多く抽出したい文字列は n -の大きさの部分文字列を作成することになります。

str.match(/.{1,n}/g); // Replace n with the size of the substring

文字列が改行やキャリッジリターンを含むことができる場合、あなたはそうするでしょう。

str.match(/(.|[\r\n]){1,n}/g); // Replace n with the size of the substring

パフォーマンスとしては、約10k文字で試したところ、Chromeで1秒ちょっとかかりました。YMMVです。

これは、再利用可能な関数でも使用することができます。

function chunkString(str, length) {
  return str.match(new RegExp('.{1,' + length + '}', 'g'));
}