前言:我偶然發現了這個工作,並認爲這是一個有趣的問題。對特定規則的字符串集合進行排序
前言編輯:我們已經有一個工作解決方案,但我正在尋找其他方法來解決這個問題。
鑑於string
集合:
["2015", "2016 New", "2016 Used", "2017 New", "2017 Used", "2018"]
我想在此集合逐年降序排序。
但是,我也想申請一個特殊的規則,其中包含字符串"New"
的一年必須在同一年之前包含字符串"Used"
。
預期的結果:
["2018", "2017 New", "2017 Used", "2016 New", "2016 Used", "2015"]
假設:
如果集合包含含有
"New"
某一年的字符串,集合總是包含含"Used"
同年(反之相反),並且永遠不會包含年份本身。["2017 New", "2017", "2016 Used", "2016"] // invalid input
年數將在1000-9999之間。
什麼是解決這個問題的最好方法是什麼?
編輯:
這裏是我們的解決方案:
var l = new[] { "2015", "2016 New", "2016 Used", "2017 New", "2017 Used", "2018" };
var sorted = l.OrderByDescending(i => i.Replace("Used", "Ased")).ToArray();
// ["2018", "2017 New", "2017 Used", "2016 New", "2016 Used", "2015"]
「2017年新的」將永遠之前的「2017年二手」,因此默認情況下,你可以簡單梳理它排序。 – Fabio
你甚至嘗試過什麼嗎?我們沒有做你的工作。 – HimBromBeere
@Fabio是的,但是OP想按降序排列。所以默認排序是'2018,2017已用,2017新等,等' – maccettura