根据标题,您使用字符串比较的做法是什么?为什么?
答案 0 :(得分:31)
您尚未指定平台,但我猜测.NET。我强烈建议你使用后一种形式 - 因为案例比较并不像你想象的那么简单。 (它也避免了创建额外的字符串,但这是另一回事。)
例如,当您在土耳其运行时,如果您使用“mail”和“MAIL”,您希望代码执行什么操作?如果您使用ToLower
它将返回false,同样如果您使用CurrentCultureIgnoreCase
- 但如果您使用InvariantCultureIgnoreCase
它将返回true。您需要考虑数据的来源以及您尝试使用它实现的目标。
有关详情和指导,请参阅MSDN中的recommendations for using strings。
除了其他任何事情,我会说后者更有效地表达你的意图。您实际上并不感兴趣的是字符串的小写值 - 您对不区分大小写方式中的 equality 感兴趣...这正是第二个形式表达。
答案 1 :(得分:7)
Equals
调用更好,因为它是一个字符串操作而不是三个。
与StringComparison.OrdinalIgnoreCase
选项进行案例说明性比较,您获得的效果最佳。但是,由于它没有考虑文化差异,因此可能并不总能得出您想要的结果。
如果您想更改案例以进行比较,建议您使用ToUpper
而不是ToLower
。一些异国情调的字母不能从大写字母到小写字母正确转换,但从大写字母到大写字母的转换有效。
在大多数情况下,性能并不重要,因此您应该使用在这种情况下最有意义的替代方案。
您尚未指定使用的语言,但是从==
运算符中它看起来像C#。如果你要使用VB,你应该考虑=
运算符不使用字符串类的相等opreator,而是VB自己进行比较的逻辑,这略有不同。
答案 2 :(得分:0)
我觉得使用第二个比第一个更好。因为,所有语言都支持第二种类型,使用起来会更方便。