locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
26 lines (25 loc) • 979 B
JavaScript
export function split(str, delimiter, limit) {
// 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);
}