diff --git a/src/mol-util/string.ts b/src/mol-util/string.ts index 62ebf10cf0c16383d93237f2e008d1d1fb48bf5a..dfc8f03bb1e7925389e341edc9b44521bfa6484d 100644 --- a/src/mol-util/string.ts +++ b/src/mol-util/string.ts @@ -52,4 +52,25 @@ export function interpolate(str: string, params: { [k: string]: any }) { const names = Object.keys(params); const values = Object.values(params); return new Function(...names, `return \`${str}\`;`)(...values); +} + +export function trimChar(str: string, char: string) { + let start = 0; + let end = str.length; + while (start < end && str[start] === char) ++start; + while (end > start && str[end - 1] === char) --end; + return (start > 0 || end < str.length) ? str.substring(start, end) : str; +} + +export function trimCharStart(str: string, char: string) { + let start = 0; + const end = str.length; + while (start < end && str[start] === char) ++start; + return (start > 0) ? str.substring(start, end) : str; +} + +export function trimCharEnd(str: string, char: string) { + let end = str.length; + while (end > 0 && str[end - 1] === char) --end; + return (end < str.length) ? str.substring(0, end) : str; } \ No newline at end of file