将JavaScriptstring拆分为固定长度的部分
我想分割一个string到固定长度(例如N )件。 当然,如果原始string的长度不是N的倍数,最后一块可能会更短。
我需要最快的方法来做到这一点,也是最简单的写法。 我到现在为止的做法如下:
var a = 'aaaabbbbccccee'; var b = []; for(var i = 4; i < a.length; i += 4){ // length 4, for example b.push(a.slice(i-4, i)); } b.push(a.slice(a.length - (4 - a.length % 4))); // last fragment
我认为必须有更好的方式去做我想做的事情。 但是我不想要额外的模块或库,只要简单的JavaScript就可以了。
在问之前,我已经看到了一些使用其他语言来解决这个问题的解决scheme,但是这些解决scheme并不是用JavaScript来devise的。
你可以试试这个:
var a = 'aaaabbbbccccee'; var b = a.match(/(.{1,4})/g);
看到这个相关的问题: https : //stackoverflow.com/a/10456644/711085和https://stackoverflow.com/a/8495740/711085 (如果性能是一个问题,请参阅注释中的性能testing。
首先(较慢)的链接:
[].concat.apply([], a.split('').map(function(x,i){ return i%4 ? [] : a.slice(i,i+4) }) )
作为一个string原型:
String.prototype.chunk = function(size) { return [].concat.apply([], this.split('').map(function(x,i){ return i%size ? [] : this.slice(i,i+size) }, this) ) }
演示:
> '123412341234123412'.chunk(4) ["1234", "1234", "1234", "1234", "12"]