以下是我的数组中的项目列表:如果您看到生成了带有日期的文件(例如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
答案 0 :(得分:1)
假设列表已经正确排序,日期总是以句点开头和结尾,并且你从来没有以不是日期的句点开头和结尾的数字序列,那么这应该工作(对于Ruby 1.9.3):
original_array.uniq {|f| f.gsub(/(?<=\.)\d+(?=\.)/, '') }
当您向Array#uniq
提供阻止时,它会使用返回值来确定“唯一性”。