【问题标题】:Why are there no char.IsUpperInvariant / char.IsLowerInvariant methods?为什么没有 char.ToUpper Invariant / char.IsLower Invariant 方法?
【发布时间】:2017-12-28 03:30:19
【问题描述】:

Char 实现方法ToLowerInvariantToUpperInvariant 将字符转换为独立于当前区域性的大写/小写。但是,没有 IsUpperInvariantIsLowerInvariant 方法。为什么?

【问题讨论】:

  • 作为一种解决方法,您可以自己编写一个。
  • 他们会返回什么?如果 ToUpperInvariant/ToLowerInvariant 会返回自身,则为真?
  • 我认为简短的回答是,它还不足以使其进入 mscorlib,而c == Char.ToLowerInvariant(c) 仅比Char.IsLowerInvariant(c) 多几个字符。此外,如果它是为IsLower 添加的,它可能必须添加到大多数其他Char.Is 方法中

标签: c# .net globalization invariantculture


【解决方案1】:

以下方法是你能得到的最好的方法:

一旦字符被转换为低/大格式,无论转换是否特定于文化,它们都会正确检测其大小写。

另一方面,你不能说给定的角色是特定文化的产物还是不变的转变。您可以只看它并观察其当前的情况是较低的还是较高的。例如,给定从大写转换获得的字符E......你怎么能说它最初是ë 还是e?如果你不知道它的原始形式和系统使用的当前文化......你根本不知道。

【讨论】:

    猜你喜欢
    • 2022-07-04
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    相关资源
    最近更新 更多