It the length of the string can change, it might be worth handling some characters individually.
string = %scanrpl(ellipsis_char : '...' : string);
Then after handling any known characters, squeeze out any remaining special characters.
string = %scanrpl(ellipsis_char : '...' : string);
Then after handling any known characters, squeeze out any remaining special characters.
Comment