如何比较人物(尊重文化)

tan*_*ius 6 c# comparison culture char

对于我在这个问题中的答案,我必须比较两个字符.我认为普通的char.CompareTo()方法允许我指定CultureInfo,但事实并非如此.

所以我的问题是:如何比较两个字符并指定CultureInfo进行比较?

Guf*_*ffa 6

字符没有启用文化的比较,您必须将字符转换为字符串,以便您可以使用例如该String.Compare(string, string, CultureInfo, CompareOptions)方法。

例子:

char a = 'å';
char b = 'ä';

// outputs -1:
Console.WriteLine(String.Compare(
  a.ToString(),
  b.ToString(),
  CultureInfo.GetCultureInfo("sv-SE"),
  CompareOptions.IgnoreCase
));

// outputs 1:
Console.WriteLine(String.Compare(
  a.ToString(),
  b.ToString(),
  CultureInfo.GetCultureInfo("en-GB"),
  CompareOptions.IgnoreCase
));
Run Code Online (Sandbox Code Playgroud)


maf*_*afu 4

比较字符和字符串确实是有区别的。让我尝试解释一下基本问题,这个问题非常简单:一个字符始终代表一个单一的 unicode 点。比较字符总是比较代码点,而不考虑它们的相同含义。

如果要比较字符的相同含义,则需要创建一个字符串并使用其中提供的比较方法。其中包括对不同文化的支持。请参阅 Guffa 的回答,了解如何做到这一点。