Skip to content

Instantly share code, notes, and snippets.

@m-dekorte
Created November 11, 2024 10:56
Show Gist options
  • Select an option

  • Save m-dekorte/9fc9a725e9e431c222464f27a6b64298 to your computer and use it in GitHub Desktop.

Select an option

Save m-dekorte/9fc9a725e9e431c222464f27a6b64298 to your computer and use it in GitHub Desktop.
λ Trim a leading and trailing, leading or trailing character repeatedly.
trimChar = LAMBDA(str, [char], [mode],
LET(
charToTrim, IF(ISOMITTED(char), " ", LEFT(char, 1)),
trimMode, IF(OR(mode = 1, mode = 2, mode = 3), mode, 1),
// Trim functions
trimStart, LAMBDA(s,
REDUCE(
s,
SEQUENCE(LEN(s)),
LAMBDA(a, _,
IF(
LEFT(a, 1) = charToTrim,
RIGHT(a, LEN(a) - 1),
a
)
)
)
),
trimEnd, LAMBDA(s,
REDUCE(
s,
SEQUENCE(LEN(s)),
LAMBDA(a, _,
IF(
RIGHT(a, 1) = charToTrim,
LEFT(a, LEN(a) - 1),
a
)
)
)
),
// Select a trim mode
CHOOSE(
trimMode,
trimEnd(trimStart(str)), // Mode 1: BOTH (default)
trimStart(str), // Mode 2: START only
trimEnd(str) // Mode 3: END only
)
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment