locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
21 lines (20 loc) • 716 B
JavaScript
const escapeForCharClass = (chars) => chars.replace(/[\\\]^/-]/g, '\\$&');
export function trim(str, chars) {
// discuss at: https://locutus.io/tcl/trim/
// parity verified: Tcl 8.6
// original by: Kevin van Zonneveld (https://kvz.io)
// example 1: trim(' hello ')
// returns 1: 'hello'
// example 2: trim('__hello__', '_')
// returns 2: 'hello'
const value = String(str);
if (chars === undefined) {
return value.trim();
}
if (chars === '') {
return value;
}
const escaped = escapeForCharClass(chars);
const pattern = new RegExp(`^[${escaped}]+|[${escaped}]+$`, 'g');
return value.replace(pattern, '');
}