【发布时间】:2013-01-11 19:23:43
【问题描述】:
看完this我还是一头雾水:
string s1 = "hello";
string s2 = "héllo";
这里的区别在于口音/文化。
以下代码的结果是False。
Console.WriteLine(s1.Equals(s2, StringComparison.InvariantCulture));
但我使用 invariant 文化,所以它应该将 é 视为 e。(默认是英文,不是吗?)
看来我得一路走下去才能用
String.Compare(String, String, CultureInfo, CompareOptions)
喜欢
string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) //true
但是,我目前的文化是he-IL,所以我不知道它为什么会起作用。
所以:
-
我无法理解
CompareOptions什么时候不起作用,尽管我使用了StringComparison.InvariantCulture( 请不要将我引用到 msdn 页面,因为我已经阅读了它,但我没有t完全理解他们的解释) -
简单来说,我应该什么时候使用每个重载?
【问题讨论】:
-
InvariantCulture基本上是一种不变的英语,用于序列化或配置文件等内容,但不适用于比较。 -
@sixlettervariables 谢谢。但是,如果您认为您的回答让我理解了我提出的那些问题,那您就错了....:-)...(以及不变的英语是什么意思)
-
é和e是否相同取决于文化。 InvariantCulture 没有理由在这里支持特定的观点。 -
这个stackoverflow.com/questions/2423377/… 和这个stackoverflow.com/questions/492799/… 几乎是重复的,结合起来可能会回答你的问题。
-
@Pete:我没有冒犯,在这种情况下直率是完美的。我正在研究一个实际的答案。