首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby FileList过滤

Ruby FileList过滤
EN

Stack Overflow用户
提问于 2017-11-16 11:48:41
回答 2查看 164关注 0票数 1

我有一个带有*.js*.tc扩展的FileList。我如何将它拆分为两个FileList数组,一个只包含*.js文件,另一个包含*.tc文件?

EN

回答 2

Stack Overflow用户

发布于 2017-11-16 12:30:24

您可以使用File.extname获取文件名的扩展名,使用Array#group_by对具有相似性的数组成员进行分组:

代码语言:javascript
复制
result = [ "aaa.js", "bbb.js", "ccc.js", 
           "xxx.tc", "yyy.tc", "zzz.tc" ].group_by { |fname| File.extname(fname) }

=> { ".js" => ["aaa.js", "bbb.js", "ccc.js"], 
     ".tc" => ["xxx.tc", "yyy.tc", "zzz.tc"] }

现在,您有了一个包含两个数组(result[".js"]result[".tc"])的Hash,这两个数组根据文件扩展名包含文件名。

票数 4
EN

Stack Overflow用户

发布于 2017-11-16 14:31:51

Enumerable#partition出手相救。

代码语言:javascript
复制
["aaa.js", "bbb.js", "ccc.js",
 "xxx.tc", "yyy.tc", "zzz.tc" ].partition do |e|
    e[/(?<=\.).*\z/] == "tc"
  end
#⇒ [["xxx.tc", "yyy.tc", "zzz.tc"],
#   ["aaa.js", "bbb.js", "ccc.js"]]

或者,更明确地说:

代码语言:javascript
复制
["aaa.js", "bbb.js", "ccc.js",
 "xxx.tc", "yyy.tc", "zzz.tc" ].partition(&/\.tc\z/.method(:=~))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47321268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档