This is an experimental formula to strip characters from text. The experimental part is using character codes instead of regular characters as a way to make the formula case-sensitive, and providing a way to reverse the logic of the formula with the "keep" input parameter. Unlike the formula explained here, this formula is not recursive.
The formula takes four inputs:
text - the incoming text
chars - the characters to strip
rep - the character to replace stripped characters with
keep - strip or preserve chars (FALSE = strip, TRUE = preserve)
The keep parameter is a boolean that "flips" the behavior of the function from stripping characters to preserving characters.
In a nutshell, the SEQUENCE function is used to generate two arrays: one for the text, one for chars. In order to make the function case-sensitive, these arrays are composed not of characters but of the ASCII codes for each character.
ABS(keep-ISNUMBER(MATCH(textarr,chararr,0))) // logical test
The ISNUMBER and MATCH combo checks each code in textarr against codes in chararr. The ABS function is used as a way to reverse the logic of the formula. If keep is set to FALSE or zero, the ISNUMBER+MATCH logic is unchanged and chars are stripped. If keep is TRUE (or 1) the logic is reversed – chars are preserved and other characters are stripped.
To convert the formula to the LAMBDA function so that the formula can be named and reused throughout the workbook, the four input arguments are moved to the front, followed by the calculation, wrapped in LET:
=LAMBDA(text,chars,rep,keep, LET( textarr,CODE(MID(text,SEQUENCE(LEN(text)),1)), chararr,CODE(MID(chars,SEQUENCE(LEN(chars)),1)), TEXTJOIN("",1,IF(ABS(keep-ISNUMBER(MATCH(textarr,chararr,0))),rep&"",CHAR(textarr))) ))
After the LAMBDA function is named "StripCharacters" the function can be called like this:
Per the example shown, the text is in cell B5, the characters to strip are "()-", the replacement string is "", and preserve mode is set to FALSE.