UNPKG

@shelf/fast-chunk-string

Version:

Chunk string into equal substrings with unicode support

34 lines (33 loc) 963 B
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;