2013-10-17 41 views
0

我只是想检查字符串中出现的所有字母是否都是大写(如果它们具有大写和小写变体)。 TCL的内置特效不表现得很根据需要,例如,检查字符串中的所有字母(来自任何主要口语)是否为大写字母

string is upper "123A" 

返回false,但我希望它返回true。如果将A换成大写的西里尔字母或来自另一个没有案例的流行字母表的字母,我也希望它能够返回true。我可以简单地过滤掉字符串中的所有非字母,但这并不是那么简单,我认为当您尝试处理除英语之外的其他语言的字母时。

+0

'stringToCheck.ToUpper()== stringToCheck' –

+0

我的印象是等值的Tcl(字符串TOUPPER)外国字母失败,但看起来这可能已经在最近版本的Tcl中得到修复。 –

+0

@ZachConn我不知道Tcl。但是,例如Php有一个函数strtoupper(),它遭受同样的问题。但是PHP函数** mb _ ** strtoupper()不会。 –

回答

2

在这种情况下,您不想要string is upper,因为它检查字符串是否为只是大写字母。 (数字不是字母)

相反,你想做的事:

set str "123A" 
if {$str eq [string toupper $str]} { 
    # It's upper-case by your definition... 
} 
相关问题