如果字符串中的字符是否为字母数字,如何在 TCL 中进行检查?

How do I check in TCL if a character from a string is alphanumeric or not?

我需要检查字符串中的字符(单独取)是否为字母数字、空格或特殊字符。无法找到执行此操作的明确方法。

例如,

set str1 = "It is 5!"

所以,我的输出应该是:

I - Alphanumeric
t - Alphanumeric
" " - Space
i - Alphanumeric
s - Aplhanumeric
" " - Space
5 - Alphanumeric
! - Special Character

string is命令可以用来判断一个字符串中的所有字符是否都是某个特定字符的成员class,可以告诉也报告第一个字符的索引不是 class.

成员的字符
% string is alpha "abc"
1
% string is alpha -failindex ix "abc123"
0
% puts $ix
3

相关的 class 可能是 alphadigitspacepunct。此外,alnumalphadigit 的并集。

在@Donal 的一个很好的回答之后.. 如果你想使用你在 TAG 中提到的 regexp.. 你可能会这样做,

set var "Abc Def 8 9"
for {set i 0} {$i < [string length $var]} {incr i} {
    set char [string index $var $i]
    if {[regexp -all {[a-zA-Z0-9]} $char]} {
        puts "$char is Alphanumeric"
    } else {
        puts "$char is Special Character"
    }
}

它会解决你的目的,一个一个地获取字符串的每个字符...并检查它是字母数字还是特殊字符..