我想将一个非常大的字符串(比方说,10,000个字符)分成N个大小的块。
在性能方面,什么是实现这一目标的最佳方法?
例如:除以2的"1234567890"
将变成["12", "34", "56", "78", "90"]
。
使用String.prototype.match
可以做到这一点吗?如果可以,从性能上来说,这是不是最好的方法?
发布于 2015-03-23 11:15:34
我创建了几个更快的变种,你可以see on jsPerf。我最喜欢的一条是:
function chunkSubstr(str, size) {
const numChunks = Math.ceil(str.length / size)
const chunks = new Array(numChunks)
for (let i = 0, o = 0; i < numChunks; ++i, o += size) {
chunks[i] = str.substr(o, size)
}
return chunks
}
发布于 2013-01-16 08:41:05
这是一个快速而直接的解决方案-
function chunkString (str, len) {
const size = Math.ceil(str.length/len)
const r = Array(size)
let offset = 0
for (let i = 0; i < size; i++) {
r[i] = str.substr(offset, len)
offset += len
}
return r
}
console.log(chunkString("helloworld", 3))
// => [ "hel", "low", "orl", "d" ]
// 10,000 char string
const bigString = "helloworld".repeat(1000)
console.time("perf")
const result = chunkString(bigString, 3)
console.timeEnd("perf")
console.log(result)
// => perf: 0.385 ms
// => [ "hel", "low", "orl", "dhe", "llo", "wor", ... ]
发布于 2018-06-21 03:21:06
惊喜吧!您可以使用split进行拆分。
var parts = "1234567890 ".split(/(.{2})/).filter(O=>O)
[ '12', '34', '56', '78', '90', ' ' ]
格式的结果
https://stackoverflow.com/questions/7033639
复制相似问题