小编典典

在 JavaScript 中将大字符串拆分为 n 大小的块

all

我想将一个非常大的字符串(比如说,10,000 个字符)分成 N 大小的块。

就性能而言,这样做的最佳方法是什么?

例如: "1234567890"除以 2 将变为["12", "34", "56", "78", "90"].

是否可以使用这样的东西String.prototype.match,如果可以,在性能方面这是最好的方法吗?


阅读 100

收藏
2022-05-07

共1个答案

小编典典

你可以这样做:

"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 上花了一秒钟多一点的时间。YMMV。

这也可以用于可重用函数:

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