¿Hay alguna función que pueda hacer .trim para caracteres o cadenas específicos?
Algo como:
var x = '@@@hello world@@'; console.log(x.trim('@')); // prints 'hello world' var y = 'hellohellohelloworld'; console.log(y.trim('hello')); // prints ' world' var z = '@@hello@world@@'; console log(z.trim('@')); // prints 'hello@world'Aunque puedo prescindir de esto, sería mucho menos eficiente y no tan limpio
Puede usar un patrón con una alternancia | para que coincida con lo que desea eliminar al principio o al final de la cadena repitiéndolo 1 o más veces en un grupo sin captura.
La repetición se ve así (?:@)+ para un solo carácter @, o así (?:hello)+ para la palabra hola
Si desea crear una función para él y desea pasar cualquier cadena, debe escapar de los metacaracteres de expresiones regulares con \
var x = '@@@hello world@@'; var y = 'hellohellohelloworld'; var z = '@@hello@world@@'; var a = '*+hello*+' const customTrim = (strSource, strToRemove) => { let escaped = strToRemove.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); return strSource.replace(new RegExp(`^(?:${escaped})+|(?:${escaped})+$`, 'g'), "") }; console.log(customTrim(x, "\\s")); console.log(customTrim(y, "hello")); console.log(customTrim(z, "@")); console.log(customTrim(a, "*+"));export function trim(str: string, char: string): string { const leading = new RegExp(`^[${char}]+`); const trailing = new RegExp(`[${char}]+$`); return str.replace(leading, "").replace(trailing, ""); }