[C#] 筆記一個小東西,關於字串數字的排序

2022-02-21

其實這是一個小事情,只是因為最近有用到不要每次寫都要查一下,乾脆自己筆記一下

簡單的說我有一堆身為字串的數字 因為增加難度 該文字為 

"10,11,12,13,014,15,21,22,23,24,25,111,112,113,0114,115" 用逗點隔開但是每個都是字串

這時候,我需要將裡面的數字排序呢?



1. 直接排序  OrderBy(x=>x)



但是這不是我們要的吧,這時候 111  排在 11 之後就字串來看很合邏輯,但是不符合數值上的邏輯,於是網路上看到有一個做法


2. 先根據長度排序之後再排序 OrderBy(x => x.Length).ThenBy(x => x)

這問題大致上沒問題,但是如果遇到前面有 0 就會因為先排長度而出現錯誤,如果你的數字字串們前面沒有0,就可以用這一招。


3. 承襲第二招,但是先把前面的 0 拿掉  .Select(x=>x.TrimStart('0')).OrderBy(x => x.Length).ThenBy(x => x)


4. 大絕招,直接 parse 成 數字 然後再排序,這招其實最直覺最常用,但是相對也比較消耗資源



至於要用哪一個,就看你的需求了

reference :

https://stackoverflow.com/questions/6396378/how-do-i-sort-strings-alphabetically-while-accounting-for-value-when-a-string-is


當麻許的超技八 2014 | Donma Hsu Design.