c# - 如何按字母顺序对字符数组进行排序,以使同一字母的大写和小写版本彼此相邻?
问题描述
例如
输入数组:'a'、'b'、'B'、'A'
使用 Array.Sort() 输出:'A'、'B'、'a'、'b'
所需的输出:'A','a','B','b'
我理解为什么'A'被认为低于'a',但我希望它按字母顺序排序,而不是按字符的相应整数排序。
是否有一个 Comparer 类可以作为 Array.Sort() 的第二个参数来解决问题?
解决方案
是否有一个 Comparer 类可以作为 Array.Sort() 的第二个参数来解决问题?
对于字符串,您希望使用 OrdinalIgnoreCase 或 InvariantCultureIgnoreCase,具体取决于您是否关心文化敏感性。看:
通常最好使用哪个 - StringComparison.OrdinalIgnoreCase 或 StringComparison.InvariantCultureIgnoreCase?
对于字符,我不知道有一个内置的比较器可以做到这一点,但很容易编写你自己的。看
请注意,这Array.Sort
是一种变异排序;如果您想要非变异排序,请执行OrderBy
on ToUpper
or ToUpperInvariant
。请注意,这里有陷阱;看
如何按字母顺序对字符数组进行排序,以使同一字母的大写和小写版本彼此相邻?
另请注意,尚不清楚您的意图是否是A
anda
是平等的——在这种情况下A
,a
,A
将是一个合法的排序,因为相等的事物是平等的,或者您是否仍然想要在 and 内的a
排序A
。再次,要小心。如果这就是你想要的,那么你也必须这样做ThenBy
。
推荐阅读
- python - 无效输入导致 psycopg2.errors.InvalidTextRepresentation
- java - 如何加载以前的数据并使用按钮继续添加其值(数字/整数)?
- python - Spotipy:当我使用 sp.search() 时出现了错误/几位艺术家
- javascript - 未捕获的类型错误:无法读取未定义的属性“toString”--javascript
- python - 将特定单元格定义为 pandas 数据框中的变量
- c# - 我将如何使用 C# 反序列化分组的 JSON 数据
- asp.net - 实体框架核心,如果已经存在如何更新,否则插入
- reactjs - React 中的路由器切换
- javascript - 如何在 WordPress 环境中导入 ES6 风格的模块?
- android - 在framework7中阻止/拒绝屏幕截图