@shelf/fast-chunk-string
Version:
Chunk string into equal substrings with unicode support
34 lines (33 loc) • 963 B
JavaScript
import runes from 'runes';
import stringLength from 'string-length';
function fastChunkString(str, { size, unicodeAware = false, }) {
str = str || '';
if (!unicodeAware) {
return getChunks(str, size);
}
return getChunksUnicode(str, size);
}
function getChunks(str, size) {
const strLength = str.length;
const numChunks = Math.ceil(strLength / size);
const chunks = new Array(numChunks);
let i = 0;
let o = 0;
for (; i < numChunks; ++i, o += size) {
chunks[i] = str.substr(o, size);
}
return chunks;
}
function getChunksUnicode(str, size) {
const strLength = stringLength(str);
const numChunks = Math.ceil(strLength / size);
const chunks = new Array(numChunks);
let i = 0;
let o = 0;
const runeChars = runes(str);
for (; i < numChunks; ++i, o += size) {
chunks[i] = runeChars.slice(o, o + size).join('');
}
return chunks;
}
export default fastChunkString;