export function split(str: string, delimiter: string, limit?: number): string[] { // discuss at: https://locutus.io/perl/split/ // parity verified: Perl 5.40 // original by: Kevin van Zonneveld (https://kvz.io) // note 1: Splits by literal delimiter and optionally truncates to limit items. // example 1: split('a:b:c', ':') // returns 1: ['a', 'b', 'c'] // example 2: split('a:b:c', ':', 2) // returns 2: ['a', 'b'] // example 3: split('hello', 'x') // returns 3: ['hello'] const source = String(str) const separator = String(delimiter) if (limit === undefined) { return source.split(separator) } const maxItems = Math.trunc(Number(limit)) if (!Number.isFinite(maxItems) || maxItems < 0) { throw new RangeError('split(): limit must be a non-negative integer') } if (maxItems === 0) { return [] } return source.split(separator).slice(0, maxItems) }