在也可以在非美国英语环境中使用的 WinForms 应用程序中,我有一个 String.Equals(strA, strB) 方法,但它失败了,因为我需要进行不区分大小写的比较,但默认情况下是大小写比较-敏感的。现在要解决此问题,您建议什么更好?
- CurrentCultureIgnoreCase ?
- StringComparision.Ordinal ?
- StringComparision.OrdinalIgnoreCase ? *有更好的建议吗?
谢谢。
使用CurrentCultureIgnoreCase
. Ordinal
比较不尊重文化使用的字母顺序。
但这当然取决于您要完成的工作。如果你想做一些忽略用户文化的事情,当然还有其他可能性,包括使用InvariantCulture
.
另外:即使您没有排序/排序,而只是检查“相等”与“不相等”,和之间也可能存在OrdinalIgnoreCase
差异CurrentCultureIgnoreCase
。例如,对于一个序数比较,"istanbul"
和"Istanbul"
是否相等,取决于大小写。但是,在土耳其文化中,它们可能不等价,因为大写版本的'i'
not 'I'
but 'İ'
。所以城市将是"İstanbul"
。