我想将一个非常大的字符串(例如10,000个字符)分割成N个大小的块。
就性能而言,最佳方法是什么?
例如: "1234567890"被2分割成["12", "34", "56", "78", "90"]。
"1234567890"
["12", "34", "56", "78", "90"]
使用这种方法是否可能实现?String.prototype.match如果可以,从性能角度来看,这是否是最佳方法?
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
就性能而言,我用大约1万个字符进行了尝试,而在Chrome上花了一点时间。YMMV。
这也可以在可重用的函数中使用:
function chunkString(str, length) { return str.match(new RegExp('.{1,' + length + '}', 'g')); }