From cc1f1c0562a4d3b160154b383b7a27df1d17493f Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Mon, 6 May 2019 13:36:59 -0700 Subject: [PATCH] added trimChar methods --- src/mol-util/string.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/mol-util/string.ts b/src/mol-util/string.ts index 62ebf10cf..dfc8f03bb 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 -- GitLab