使用数字值对字符串列表进行排序

时间:2010-02-07 14:20:01

标签: c# linq sorting

我有一个字符串列表,这很可能,但不保证包含数字列表,即

{"1", "6", "2", "21", "89"}

对字符串列表进行排序以使其始终按升序显示的方法是什么?

在进行排序之前,我无法先将字符串解析为数字,因为字符串可以包含非数字字符。而且我不想查看列表并将每个组件检查到数字并进行排序。为此目的,是否已经存在一个库?

如果我们有混合数字和非数字字符串项,则数字字符串始终优先于非数字字符串。

3 个答案:

答案 0 :(得分:8)

之前的问题略有不同,但同样的答案仍然适用,因为他们在同一个网站上有一个C#实现。

SO问题:Sort on a string that may contain a number

ScArcher2提供的答案:The Alphanum Algorithm

答案 1 :(得分:1)

您希望对元素进行排序,就像Windows XP Explorer对文件一样。有关如何执行此操作,请参阅this article

答案 2 :(得分:0)

如果这是C#,那就是Int32.TryParse()的用途。

如果这是C ++,那么std :: string :: find_first_not_of是一个不错的选择。传递一个字符串,其中包含数字0到9的ascii字符(加上减号和加号?),如果它返回-1则为整数。