如何使用变音符号对列表进行排序而不删除变音符号
如何对包含带变音符号的字母的列表进行排序?
本例中使用的单词是虚构的。
现在我得到一个显示此内容的列表:
- 巴布
- 巴兹
- 贝兹
但我想获得一个显示此内容的列表:
- 巴兹
- 巴布
- 贝兹
将变音符号单独显示为一个字母。 有没有办法在 C# 中做到这一点?
How to sort a list that contains letters with diacritic markings?
Words used in this example are made up.
Now I get a list that displays this:
- báb
- baz
- bez
But I want to get a list that displays this:
- baz
- báb
- bez
Showing the diacritic as a letter on its own.
Is there a way to do this in C#?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您将当前线程的区域性设置为您想要排序的语言,那么这应该会自动工作(假设您不需要某些特殊的自定义排序顺序)。像这样
应该让您根据波兰文化设置排序列表。
更新:如果区域性设置没有按照您想要的方式对其进行排序,那么另一个选择是实现您自己的字符串比较器。
更新 2:字符串比较器示例:
免责声明:我尚未测试它,但它应该为您提供总体思路。另外 char.CompareTo() 不会按字典顺序进行比较,而是根据我发现的一个来源进行比较和>确实 - 但不能保证。最坏的情况是,您必须将 cx 和 cy 转换为字符串,然后使用默认的字符串比较。
If you set the culture of the current thread to the language you want to sort for then this should work automagically (assuming you don't want some special customized sort order). Like this
Should get you the list sorted according to the Polish culture settings.
Update: If the culture settings don't sort it the way you want then another option is to implement your own string comparer.
Update 2: String comparer example:
Disclaimer: I haven't tested it but it should give you the general idea. Also
char.CompareTo()
does not compare lexicographically but according to one source I found < and > does - can't guarantee it though. Worst case you have to convertcx
andcy
into strings and then use the default string comparison.