3

我正处于工作编程的前六个月,我仍然对标准和最佳实践有一种感觉。

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

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

4

4 回答 4

7

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

于 2013-07-25T14:15:34.980 回答
2

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

string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase);
于 2013-07-25T14:07:56.103 回答
1

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

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

于 2013-07-25T14:07:51.247 回答
1

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

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

这就是我对 Scott Hanselmans 文章的解读。 更新 dasBlog 土耳其语-I 错误并提醒我关于全球化

于 2013-07-28T10:12:48.983 回答