首页 > 解决方案 > TCL:如何从字符串中删除所有字母/数字?

问题描述

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

set new_s [string trim $s "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXXYZ"]

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

set new_s [string trim $s "0123456789"]

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

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

set new_s [string trim $s "012"]

有人可以解释为什么吗?

标签: stringtcl

解决方案


使用正则表达式:

set s abcdefg0123456
regsub -all {\d+} $s {} new_s ;# Remove all digits
regsub -all {[[:alpha:]]+} $s {} new_s ;# Remove all letters

推荐阅读