locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
29 lines (28 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.split = split;
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);
}