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

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

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

排序字符串列表的方式是什么,以便始终按升序显示?

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

在我们有混合数字和非数字字符串项的情况下,数字字符串总是优先于非数字字符串。

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

SO问题: 对可能包含数字的字符串进行排序

答案由ScArcher2提供: Alphanum算法

您想要对元素进行排序,就像Windows XP Explorer对文件一样。 请参阅此文章 ,了解如何执行此操作。

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

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