前言:我偶然发现了这个工作,并认为这是一个有趣的问题。对特定规则的字符串集合进行排序
前言编辑:我们已经有一个工作解决方案,但我正在寻找其他方法来解决这个问题。
鉴于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