locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
26 lines (25 loc) • 934 B
JavaScript
export function rsplit_terminator(delimiter, str) {
// discuss at: https://locutus.io/rust/rsplit_terminator/
// parity verified: Rust 1.85
// original by: Kevin van Zonneveld (https://kvz.io)
// note 1: Reverse-order variant of split_terminator.
// example 1: rsplit_terminator('.', 'A.B.')
// returns 1: ['B', 'A']
// example 2: rsplit_terminator('::', 'x::y::z')
// returns 2: ['z', 'y', 'x']
// example 3: rsplit_terminator('.', 'A..B..')
// returns 3: ['', 'B', '', 'A']
return split_terminator(delimiter, str).reverse();
}
function split_terminator(delimiter, str) {
const source = String(str);
const value = String(delimiter);
if (value === '') {
return ['', ...Array.from(source)];
}
const parts = source.split(value);
if (source.endsWith(value)) {
parts.pop();
}
return parts;
}