小编典典

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

javascript

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

就性能而言,最佳方法是什么?

例如: "1234567890"被2分割成["12", "34", "56", "78", "90"]

使用这种方法是否可能实现?String.prototype.match如果可以,从性能角度来看,这是否是最佳方法?


阅读 310

收藏
2020-04-25

共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

就性能而言,我用大约1万个字符进行了尝试,而在Chrome上花了一点时间。YMMV。

这也可以在可重用的函数中使用:

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