我有一个字符串数组
List<string> s = new List<string>{"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15c","15b","150","15a"};
如果我们只是打电话
s.Sort();
然后将它们排序为 1 10 11 12 13 14 150 15a 15b 15c 2 3 4 5 6 7 8 9
如何让它产生直观的人工排序?那些。按字符串排序也有效,但首先 - 也是按数字的值。那些。在这种情况下,正确的输出是
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15a,15b,15c,150;
我知道您可以编写一个比较器,它可能会在字符串中查找数字,如果找到它们,检查还有更多的地方,以及字符串是否按字母顺序排列,但是如何实现呢?
这里的问题更有可能,也许已经实施了类似的事情?也许有某种 StringComparsion.NumericFirst,它只是作为参数传递给排序并按照人们对其进行排序的方式进行排序?
这是我的尝试。我不装天才,因为我自己在常规赛中比较弱,也许有更简单的方法。
同样,这里没有防御性编程,如果您使用此选项,请注意字符串格式不正确的情况。
控制台输出
不带
int.Parse.