在字符串比较中使用哪种文化信息?

时间:2013-03-22 12:42:34

标签: asp.net string c#-4.0

我从我的TL得到了一个提示,我不应该只使用string.compare,因为我正在使用程序化字符串。他究竟想说什么?我们有关于弦乐的文化信息吗?使用stringComparision.Ordinal有什么好处?

2 个答案:

答案 0 :(得分:2)

如果未指定任何比较选项,String.Compare方法将默认使用当前区域性设置进行与文化相关的比较。这意味着使用特定文化的排序顺序比较字符。

如果指定Ordinal比较,则仅根据Unicode字符代码比较字符。

使用序数比较的一个好处是它更快。如果您要进行大量比较,这很重要。

比较结果不同的示例:

Console.WriteLine(String.Compare("å", "ä"));
Console.WriteLine(String.Compare("å", "ä", StringComparison.Ordinal));

输出:

-1
1

答案 1 :(得分:1)

字符串比较将使用当前文化,即操作系统具有的文化(如果转到Windows中的“区域”设置,则可以更改它)

这是来自msdn:

  

比较使用当前的文化来获得特定文化   套管规则和字母顺序等信息   个人角色

如果您不希望文化成为问题,您可以随时指定比较:

String.Compare("a", "a", StringComparison.InvariantCulture);