Ruby排序并从数组中删除重复项

时间:2013-04-11 14:45:26

标签: ruby sorting

以下是我的数组中的项目列表:如果您看到生成了带有日期的文件(例如update.20130410.xml)。我应该只采取最新的文件,删除其余的。让我们假设数组值已经排序,所以如果我们只是在重复模式中选择顶部项目,那应该没问题。请帮帮我。

原始阵列:

theOneBig.xml
theSecondFine.xml
theTestOne.xml
OtherImp.xml
mrss.xml
update.20130410.xml
update.20130402.xml
update.20120314.xml
update.20120313.xml
update.20120312.xml
update.20120301.xml
update.20130411.xml
file.update.20130410.xml
file.update.20130409.xml
file.update.20130409.xml

我希望得到的输出是

theOneBig.xml
theSecondFine.xml
theTestOne.xml
OtherImp.xml
mrss.xml
update.20130410.xml
file.update.20130410.xml

1 个答案:

答案 0 :(得分:1)

假设列表已经正确排序,日期总是以句点开头和结尾,并且你从来没有以不是日期的句点开头和结尾的数字序列,那么这应该工作(对于Ruby 1.9.3):

original_array.uniq {|f| f.gsub(/(?<=\.)\d+(?=\.)/, '') }

当您向Array#uniq提供阻止时,它会使用返回值来确定“唯一性”。