【问题标题】:Checking if all letters in a string (from any major spoken language) are upper-casee检查字符串中的所有字母(来自任何主要口语)是否都是大写字母
【发布时间】:2013-10-18 04:48:02
【问题描述】:

我只是想检查一个字符串中出现的所有字母是否都是大写的(如果它们有小写和大写的变体)。 Tcl 的内置 proc 的行为不如预期,例如,

string is upper "123A"

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

【问题讨论】:

  • stringToCheck.ToUpper() == stringToCheck
  • 我的印象是 Tcl (string toupper) 中的等效项对于外国字母表失败了,但看起来这可能已在最近版本的 Tcl 中得到修复。
  • @ZachConn 我不了解 Tcl。但是例如 Php 有一个函数 strtoupper() 会遇到同样的问题。但是 php 函数 mb_ strtoupper() 没有。
  • @nl-x:Tcl 中的所有字符串都是透明的 mb-aware。 (有一些历史性的错误,但它们就是:历史性的。)

标签: string internationalization tcl


【解决方案1】:

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

相反,你想这样做:

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

【讨论】:

    猜你喜欢
    • 2012-10-09
    • 2014-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多