首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这种情况下,使用StringComparer.CurrentCulture是正确的选择吗?

在这种情况下,使用StringComparer.CurrentCulture是正确的选择吗?
EN

Stack Overflow用户
提问于 2010-01-07 05:28:33
回答 2查看 424关注 0票数 3

我有一个要使用Enumerable.OrderBy进行排序的UTF-8字符串列表。字符串可以包含任意数量的字符集-例如,英语、德语和日语,或者它们的混合,甚至。

例如,下面是一个示例输入列表:

代码语言:javascript
复制
["東京","North 東京", "München", "New York", "Chicago", "大阪市"]

我不知道使用StringComparer.CurrentCulture是否是传递给OrderBy()的正确的字符串比较参数。如果应用程序的当前区域性是en-US,但我仍然希望在en-US排序规则之外“正确地”对UTF8数据进行排序,该怎么办?

我的困惑可能源于我对Oracle中的NLSSORT函数的理解,该函数与.NET字符串比较和排序语义不太匹配。例如,设置NLS_SORT=Japanese_M意味着它将正确地对拉丁语、西欧和日语进行排序,而不管这些字符是否出现在可排序列中的给定字符串中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-07 05:34:40

没有一种比较适用于所有文化。

除了检测语言并做出相应选择之外,InvariantCulture是您最好的选择。正如您链接的文档所注明的:

不要:在大多数情况下使用基于StringComparison.Invariable的字符串操作;少数例外之一是持久化具有语言意义但与文化无关的数据。

我增加了重点。这个例外或多或少就是你正在做的。

票数 4
EN

Stack Overflow用户

发布于 2010-01-07 05:56:53

把你的眼睛放在球上:你排序是为了帮助人类在列表中找到一个字符串。您需要一位熟练的语言学家来同时了解英语、德语和日语的排序规则。一只眼睛出现在你的清单上的几率有多大?始终确保列表是根据本地区域性规则进行排序的,并且排序是本地化的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2016384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档