当字符串为数字时,如何在按值排序时按字母顺序对字符串进行排序?
|
我正在尝试对一组数字进行排序,这些数字是字符串,我希望它们能够按数字进行排序。
问题是我无法将数字转换为int。
这是代码:
string[] things= new string[] { \"105\", \"101\", \"102\", \"103\", \"90\" };
foreach (var thing in things.OrderBy(x => x))
{
Console.WriteLine(thing);
}
输出:101、102、103、105、90
我想要:90、101、102、103、105
编辑:
输出不能为090、101、102 ...
更新了代码示例,使之改为\“ things \”,而不是\“ sizes \”。该数组可以是这样的:
string[] things= new string[] { \"paul\", \"bob\", \"lauren\", \"007\", \"90\" };
这意味着它需要按字母顺序和数字排序:
007、90,鲍勃,劳伦,保罗
没有找到相关结果
已邀请:
19 个回复
蕉衫
素汞读
迪擅哨乘傅
甲车劲
作品
戊袱
中有一个本机函数,它将字符串中的数字作为数字而不是字母进行比较。使比较器很容易调用该函数并将其用于比较。
它甚至适用于同时具有文本和数字的字符串。这是一个示例程序,它将显示默认排序和and6ѭ排序之间的差异
哪个输出
课刊灭似
注意: 当所有的字符串都可以转换为int时,这将很有帮助。
盛虱
功飘
然后像这样比较:
输出:007、90、90、101、102、103、105,鲍勃,劳伦,保罗
苦诫
稍惮
朗排谎纷瘟
可以简化为:
之所以起作用,是因为唯一检查ѭ19的结果的是结果是否更大,更小或等于零。一个人可以简单地从另一个中减去这些值,而不必处理返回值。 同样,“ 20”方法也不必使用“ 21”块,并且可以从“ 22”中受益。 对于那些不确定的人: 该比较器将对值进行排序,以便始终将非数字值附加到列表的末尾。如果在开始时想要它们,则必须交换第二个和第三个
块。
缝皋
舞备联
arr = arr.OrderBy(x => x,新的NaturalSort())。ToArray(); 我需要它的原因是将其归档在文件名以数字开头的目录中:
柑恫祟
现在对列表进行排序并将其合并回去...
我试图在这个有趣的问题上做出贡献...
郡晒景沧
际恃啸称桅
郡晒景沧
在修改它以处理文件名之后,我还从SO页中获取了SplitCharsAndNums。
告耸
哇哈很简单吧? :D
辽躺