TCL:如何删除字符串中的所有字母/数字?

con*_*ion 2 string tcl

我正在使用 tcl 编程语言并尝试从字符串中删除所有字母或数字。从这个例子中,我知道从字符串(例如set s abcdefg0123456)中删除所有字母的一般方法是

set new_s [string trim $s "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXXYZ"]
Run Code Online (Sandbox Code Playgroud)

如果我想从字符串中删除所有数字,我可以这样做

set new_s [string trim $s "0123456789"]
Run Code Online (Sandbox Code Playgroud)

有没有更直接的方法来删除所有字母/数字?

我还注意到,如果我想删除一部分数字(例如 012)而不是所有数字,则以下操作不起作用。

set new_s [string trim $s "012"]
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么吗?

Sha*_*awn 5

使用正则表达式:

set s abcdefg0123456
regsub -all {\d+} $s {} new_s ;# Remove all digits
regsub -all {[[:alpha:]]+} $s {} new_s ;# Remove all letters
Run Code Online (Sandbox Code Playgroud)