簡體   English   中英

將 JavaScript 字符串拆分為固定長度的片段

[英]Split a JavaScript string into fixed-length pieces

我想將一個字符串拆分為固定長度(例如N )的部分。 當然,最后一段可以更短,如果原始字符串的長度不是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。

在問之前,我已經看到一些使用其他語言解決這個問題的解決方案,但它們的設計並沒有考慮到 JavaScript。

你可以試試這個:

var a = 'aaaabbbbccccee';
var b = a.match(/(.{1,4})/g);

請參閱此相關問題: https : //stackoverflow.com/a/10456644/711085https://stackoverflow.com/a/8495740/711085 (如果性能有問題,請參閱評論中的性能測試。)

第一個(較慢的)鏈接:

[].concat.apply([],
    a.split('').map(function(x,i){ return i%4 ? [] : a.slice(i,i+4) })
)

作為字符串原型:

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"]
function stringToChanks(string, chunkSize) {
    const chunks = [];
    while (string.length > 0) {
        chunks.push(string.substring(0, chunkSize));
        string = string.substring(chunkSize, string.length);
    }
    return chunks
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM