我想把一个非常大的字符串(比如10,000个字符)分割成n大小的块。
就性能而言,最好的方法是什么?
例如: "1234567890"除以2将变成["12","34","56","78","90"]。
使用string。prototype。match可以实现这样的事情吗如果可以,从性能来看,这是最好的方式吗?
我想把一个非常大的字符串(比如10,000个字符)分割成n大小的块。
就性能而言,最好的方法是什么?
例如: "1234567890"除以2将变成["12","34","56","78","90"]。
使用string。prototype。match可以实现这样的事情吗如果可以,从性能来看,这是最好的方式吗?
当前回答
比较match, slice, substr和substring 不同块大小的匹配和切片的比较 小块大小的匹配和切片的比较
底线:
match非常低效,slice更好,在Firefox上substr/substring更好 匹配对于短字符串来说效率更低(即使使用缓存的regex -可能是因为regex解析设置时间) 对于大块大小的匹配效率更低(可能是由于无法“跳跃”) 对于更长的字符串和非常小的块大小,match在旧的IE上优于slice,但在所有其他系统上仍然失败 jsperf岩石
其他回答
比较match, slice, substr和substring 不同块大小的匹配和切片的比较 小块大小的匹配和切片的比较
底线:
match非常低效,slice更好,在Firefox上substr/substring更好 匹配对于短字符串来说效率更低(即使使用缓存的regex -可能是因为regex解析设置时间) 对于大块大小的匹配效率更低(可能是由于无法“跳跃”) 对于更长的字符串和非常小的块大小,match在旧的IE上优于slice,但在所有其他系统上仍然失败 jsperf岩石
function chunkString(str, length = 10) {
let result = [],
offset = 0;
if (str.length <= length) return result.push(str) && result;
while (offset < str.length) {
result.push(str.substr(offset, length));
offset += length;
}
return result;
}
它将大字符串拆分为给定单词的小字符串。
function chunkSubstr(str, words) {
var parts = str.split(" ") , values = [] , i = 0 , tmpVar = "";
$.each(parts, function(index, value) {
if(tmpVar.length < words){
tmpVar += " " + value;
}else{
values[i] = tmpVar.replace(/\s+/g, " ");
i++;
tmpVar = value;
}
});
if(values.length < 1 && parts.length > 0){
values[0] = tmpVar;
}
return values;
}
惊喜!你可以使用split来分割。
var parts = "1234567890 ".split(/(.{2})/).filter(O=>O)
结果显示['12','34','56','78','90',' ']
我会用正则表达式…
var chunkStr = function(str, chunkLength) {
return str.match(new RegExp('[\\s\\S]{1,' + +chunkLength + '}', 'g'));
}