作者wind681201 (阿風~~)
看板C_Sharp
標題[問題] Linq 統整連續序號
時間Wed Jul 1 20:26:21 2020
各位大大:
我有一個字串陣列
string[] a = new string[]{"1","2","5","7","A8","A6","A7","C1","C3","3","C2"}
我想要整理,是否有什麼演算法,可以達到下方我要的結果,我會用迴圈,只是想知道
linq之類的,可以怎麼寫,想優化一下。
結果:
1-3
5
7
A6-A8
C1-C3
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.183.118.24 (泰國)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1593606385.A.308.html
1F:→ airtsubasa: orderby len, then by value 07/01 20:50
2F:→ sirius65482: 其實你這個只要OrderBy value就好了 嘻嘻 07/01 20:55
3F:→ wind681201: 我的意思是,不是只要排序,是要變成 1-3這樣 07/01 22:13
4F:→ awwseed: 你還是要先排序好,然後一個一個比? 07/01 22:16
5F:→ wind681201: 例如123,我顯示出1-3,連續的序號,會只顯示頭跟尾 07/01 22:16
6F:→ awwseed: 遇到純數值就判斷跟前面一個差1 07/01 22:16
7F:→ awwseed: 如果非純數值就做字串拆解拿出數值部份去比吧 07/01 22:17
8F:→ awwseed: 我覺得先把如果你用人眼+人腦的情況下會怎麼去達成需求 07/01 22:17
9F:→ awwseed: 條列式的寫出來,你可能會比較好轉變成 codeY 07/01 22:17
10F:→ awwseed: 判斷是不是純數值可以用 int.TryParse 或是 Regex 吧@@? 07/01 22:25
11F:→ wind681201: 對,目前我是用這樣的方式,但我想有沒有更好的方法 07/02 08:16
12F:推 Litfal: 如果格式確定純數字和英文+數字只有這兩種,那就先轉成數 07/07 19:40
13F:→ Litfal: 值,再排序,最後掃一次整理即可 07/07 19:40
14F:→ Litfal: 至於怎麼轉數值,看你的C1是HEX還是EXCEL cell,還有進位 07/07 19:42
15F:→ Litfal: 邊界是不是也要串成一組 07/07 19:42
16F:推 APTON: 自己定義一個擴充方法吧 07/09 15:12
17F:→ disabledman: 只想到排再手動掃 07/10 05:38
18F:推 Timba: 推 07/11 02:39