gpt4 book ai didi

c# - String.Equals 的 StringComparison 类型的文化是否重要?

转载 作者:太空狗 更新时间:2023-10-29 20:21:13 27 4
gpt4 key购买 nike

在 C# 中,您可以使用 String.Equals 比较两个字符串并提供 StringComparison

我最近一直在寻求更新比较 ToLower() 的陈旧方法,因为我了解到它不适用于所有语言/文化。

据我所知,当遇到包含 ae 的列表时,比较类型用于确定顺序,以确定哪个应该首先出现(某些文化顺序事情不同)。

对于 string.Equals,排序并不重要。因此,可以安全地假设许多选项是无关紧要的,只有 [Ordinal] 和 [Ordinal]IgnoreCase 是重要的吗?

MSDN article for String.Equals

The comparisonType parameter indicates whether the comparison should use the current or invariant culture, honor or ignore the case of the two strings being compared, or use word or ordinal sort rules.

string.Equals(myString, theirString, StringComparison.OrdinalIgnoreCase)

我也有兴趣知道 sort 方法在内部是如何工作的,它是否使用 String.Compare 来计算两个字符串的相对位置?

最佳答案

不区分大小写的比较依赖于文化。例如使用土耳其文化,i 不是 I 的小写。在这种文化中,Iı 配对,而 İi 配对。参见 Dotted and dotless I on Wikipedia .

有许多与区域性敏感字符串操作相关的怪异效果。例如"KonNy".StartsWith("Kon") can return false .

因此,即使是看似无害的操作,我也建议切换到对文化不敏感的操作。


即使是对文化不敏感的操作,unicode 中仍有许多不直观的行为,例如同一字形的多种表示、看起来相同的不同代码点、被某些操作忽略但被其他操作观察到的零宽度字符。 ..

关于c# - String.Equals 的 StringComparison 类型的文化是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057898/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com