【问题标题】:Is it more common/standard to compare uppercase or lowercase?比较大写还是小写更常见/标准?
【发布时间】:2013-07-25 14:05:25
【问题描述】:

我在工作的前六个月进行编程,但我仍然对标准和最佳实践有一种感觉。

在进行字符串或字符比较时,使用 ToUpper 比较大写字符还是使用 ToLower 比较小写更常见?我可能更经常看到大写字母,但我一直在寻找一个更明确的答案,也许是一个冗长的优化解释(较低的 ASCII 代码,等等)。

除此之外:在我当前的任务中,我使用 string#replace 并且我的新字符串将小写以提高可读性,但这是否一定意味着我应该在我的源字符串和我的子字符串上使用 ToLower在找吗?

【问题讨论】:

    标签: coding-style replace tolower toupper


    【解决方案1】:

    如果有一种方法可以在不更改大小写的情况下进行不区分大小写的比较,那么您应该使用它。如果不是,在大多数情况下最好转换为大写。例如,德语的 sharp-s ß 转换为大写的双 S,并且正确地比较等于 SS。如果您转换为小写,这将失败,因为小写的 SS 是 ss,而不是 ß。

    【讨论】:

      【解决方案2】:

      取决于您使用的编程语言,C# 内置了不区分大小写的比较:

      string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase);
      

      【讨论】:

      • 我碰巧在使用 C#,但我对强制使用绝对大小写(如果存在)时的不可知偏好感兴趣。
      【解决方案3】:

      这可能是您的特定开发团队所特有的。无论哪种方式,它都应该是等效的,因为所有的 lower->upper 转换都应该包含倒数的 upper->lower。

      但是,在项目中保持一致可能是个好主意,以防万一你得到一个没有互惠关系的古怪扩展角色。

      【讨论】:

      • 是否存在not一致会导致扩展字符出现问题的情况?
      • 正如@Joni 指出的那样,ß 不具有倒数的上部-> 下部和下部-> 上部。如果在同一个项目中同时进行上下比较,可能会得到不一致的结果。
      【解决方案4】:

      在某些情况下你应该使用:InvariantCultureIgnoreCase

      string.Equals(a, b, StringComparison.InvariantCultureIgnoreCase);
      

      这就是我对 Scott Hanselmans 文章的解读。 Update on the dasBlog Turkish-I bug and a reminder to me on Globalization

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-23
        • 1970-01-01
        • 2014-07-19
        • 2023-02-11
        • 2010-11-07
        • 2016-05-03
        相关资源
        最近更新 更多