不区分大小写的 StringComparisons 之间的区别?
可能的重复:
通常最好使用哪个 - StringComparison.OrdinalIgnoreCase 或 StringComparison .InvariantCultureIgnoreCase?
当使用 String.Equals(string a, string b, StringComparison ComparisonType) 并且不关心 'a' 和 'b' 的大小写时,正确的 StringComparison 使用是什么? 换句话说,StringComparison.CurrentCultureIgnoreCase、StringComparison.InvariantCultureIgnoreCase 和 StringComparison.OrdinalIgnoreCase 之间有什么区别,以及每一项将如何影响 String.Equals 的使用?
Possible Duplicate:
Which is generally best to use — StringComparison.OrdinalIgnoreCase or StringComparison.InvariantCultureIgnoreCase?
When using the String.Equals(string a, string b, StringComparison comparisonType) and not caring about the case of 'a' and 'b', what's the proper StringComparison to use?
In other words, what's the difference between StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase, and StringComparison.OrdinalIgnoreCase, and how will each one affect the use of String.Equals?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题是小写字母的大写版本在所有语言中都不相同。 例如,“u”的大写在 en-us 中是“U”,但在其他文化中可能是其他内容。
例如,试试这个:
因此,如果您在当前线程的区域性中输入了包含此类字母的字符串,则使用不变区域性可能会给出错误的结果。 因此,如果您确定比较的字符串是在当前区域性中输入的并且也应该以这种方式进行比较,那么我会使用 CurrentCultureIgnoreCase。
The thing is that uppercase versions of lowercase letters are not same in all languages. For example, uppercase of "u" is "U" in en-us, but it may be something else in some other culture.
Try this, for example:
So if you have strings entered in current thread's culture, containing such letters, using invariant culture might give wrong results. So I would use CurrentCultureIgnoreCase, if you are sure that the compared strings were entered in current culture and should be compared that way also.