我想将一个非常大的字符串(比如说,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
就性能而言,我尝试了大约 10k 个字符,在 Chrome 上花了一秒钟多一点的时间。YMMV。
这也可以用于可重用函数:
function chunkString(str, length) { return str.match(new RegExp('.{1,' + length + '}', 'g')); }