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

Posted

技术标签:

【中文标题】如何比较人物(尊重文化)【英文标题】:How to compare characters (respecting a culture) 【发布时间】:2010-05-21 09:06:18 【问题描述】:

对于我在this question 中的回答,我必须比较两个字符。我认为普通的char.CompareTo() 方法可以让我指定一个CultureInfo,但事实并非如此。

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

【问题讨论】:

【参考方案1】:

没有启用文化的字符比较,您必须将字符转换为字符串,以便您可以使用例如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
));

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

你试过String.Compare方法吗?

比较使用当前文化来获取特定于文化的信息,例如大小写规则和单个字符的字母顺序。例如,文化可以指定某些字符组合被视为单个字符,或以特定方式比较大小写字符,或者字符的排序顺序取决于其前面或后面的字符。

String.Compare(str1, str2, false, new CultureInfo("en-US"))

【讨论】:

【参考方案4】:

在比较 C# 中的字符时,我认为cultureInfo 并不重要。 char 已经是一个 Unicode 字符,因此可以很容易地将两个字符与 CultureInfo 进行比较。

【讨论】:

我认为这个问题的目标是在某种文化中具有相同含义的不同 unicode 字符的平等。例如,(忽略大小写时)i 和 I 在英国是相同的,但在土耳其却不是。 我认为他正在寻找自然语言处理方式。 @mafutrct, @this:是的,我很好奇在某种文化(例如在土耳其)中比较字符的可能性。当我比较字符和两个转换为字符串的字符时,似乎有区别。

以上是关于如何比较人物(尊重文化)的主要内容,如果未能解决你的问题,请参考以下文章

袁氏-人物-佛学-袁焕仙:百科

中国黑客传奇人物,跨国公司多次高薪聘用

中岛美雪——疑似穿越人物

SAI绘制卡通人物线稿图

刘锦程荣获2022年度中国电商行业创新人物奖

怎么给视频里的人物换脸