【发布时间】:2020-08-09 01:48:19
【问题描述】:
我的目标是将List<string> 以凌乱的顺序排序为类似["1", "1a", "2", "2a", "2b", "a", "b"] 的顺序
我的代码有点长,所以我把它包含在这个链接https://dotnetfiddle.net/wZ0dTG。
我要做的是使用Regex.Split(string, "([0-9]+)")[0] 拆分字符串,然后根据哪些字符串通过int.TryParse,我按数字或字母顺序对列表进行排序。
正则表达式匹配字符串中包含的所有整数。
在我应用正则表达式之前,它会排序。虽然它排序了,但它并没有正确排序。
当我应用正则表达式时,我收到此错误:
ArgumentException:无法排序,因为 IComparer.Compare() 方法返回不一致的结果。一个值与自身比较不相等,或者一个值与另一个值重复比较会产生不同的结果。 IComparer: 'System.Comparison`1[Ndot_Partnering_Tool.Data.Models.Project
【问题讨论】:
-
如果你想要的只是:'["1", "1a", "2", "2a", "2b", "a", "b"]' 那么你可以简单地对字符串进行排序,因为按排序顺序,数字排在字母之前。
-
列表是否还可以包含“12a”,它应该排在“2a”之前还是之后?
-
@Klaus "12a" 也必须在 "2a" 之后,就好像 12 在 2 之后一样。可能,"100000z" 必须在 "9000z" 之后。