我有一个字符串需要拆分成数组,例如:
"1234567890"
我需要能够像这样拆分它:
"1234567890".break(2) = ["12345", "67890"]
并且:
"1234567890".break(3) = ["123", "456","7890"]
我不希望将其拆分成等长的数组,而是希望将字符串拆分为长度为 n
的数组。你认为我该如何做到这一点?
不,不是像这样做:正则表达式 - 在JavaScript中按n个字符大小拆分大型字符串
我有一个字符串需要拆分成数组,例如:
"1234567890"
"1234567890".break(2) = ["12345", "67890"]
并且:
"1234567890".break(3) = ["123", "456","7890"]
我不希望将其拆分成等长的数组,而是希望将字符串拆分为长度为 n
的数组。你认为我该如何做到这一点?
不,不是像这样做:正则表达式 - 在JavaScript中按n个字符大小拆分大型字符串
这正是您所要求的。
function breakString(str, items) {
var result = str.match(new RegExp('.{1,' + Math.floor(str.length / items) + '}', 'g'));
while(result.length > items) {
result[result.length - 2] += result[result.length - 1];
result.splice(result.length - 1, 1);
}
return result;
}
var brk = function(s,n){
if(s.split && typeof n === "number") {
var l = s.length,
z = ~~(l/n),
zx = (z*n<l) ? l-z*(n-1) : z;
a = [];
for(var i=0; i<n-1; i++) {
a[i] = s.slice(i*z,i*z+z);
}
a[Math.ceil(n-1)] = s.slice(-zx);
return a;
} else {
return false;
}
};
console.log(brk("1234567890",3));
brk("1234567890", 7) //["1", "2", "3", "4", "5", "6", "90"]
。 - Alexander Elgin