【问题标题】:Remove part of file path in Ruby在 Ruby 中删除部分文件路径
【发布时间】:2017-12-12 14:23:42
【问题描述】:

我正在接收一个数组作为变量

是一个例子

["/a/b/01_Sources/02_Transferred/06_CPAS/Redbull/from_MediaHouse/Transcripts/MI201711200143.xlsx", "/a/b/01_Sources/02_Transferred/06_CPAS/Redbull/from_MediaHouse/Transcripts/MI201703030110.pdf"]

以下语句创建此列表:

<%= var(file_list_array).map{|file| "<li>#{File.basename(file)}</li>"}.join("\n")%>

  • MI201711200143.xlsx
  • MI201703030110.pdf
  • 以下语句创建此列表

    <%= var(file_list_array).map{|file| "<li>#{file}</li>"}.join("\n")%>
    

  • /a/b/01_Sources/02_Transferred/06_CPAS/Redbull/from_MediaHouse/Transcripts/MI201711200143.xlsx
  • /a/b/01_Sources/02_Transferred/06_CPAS/Redbull/from_MediaHouse/Transcripts/MI201703030110.pdf
  • 但我真正想要的是:

  • /Redbull/from_MediaHouse/Transcripts/MI201711200143.xlsx
  • /Redbull/from_MediaHouse/Transcripts/MI201703030110.pdf
  • 我需要改变什么来获得它?

    【问题讨论】:

    • 是什么决定了您要保留的路径部分?

    标签: ruby regex filepath


    【解决方案1】:

    假设您的数组中有文件路径数组,您可以这样做。

    file_paths.map{|path| path.gsub(/.*(\/Redbull\/.*)/, $1) }
    

    这将用“Redbull”目录下的任何内容替换每个项目

    或者,如果您不想预处理该列表,则可以将其放入显示代码中,但这会使您不太清楚需要发送显示逻辑的内容。

    <%= var(file_list_array).map{|file| "<li>#{file.gsub(/.*(\/Redbull\/.*)/, $1)}</li>"}.join("\n")%>
    

    【讨论】:

    • 第二个例子很好。我把两个 erb 样本混在一起了
    【解决方案2】:

    试试这个

    file_list_array[0].split("06_CPAS")[1]
    

    假设您想从 "06_CPAS" 拆分。你也可以像这样将它作为变量传递

    split_str = "06_CPAS"
    index = 0
    file_list_array[index].split(split_str)[1]
    

    【讨论】:

      猜你喜欢
      • 2017-09-30
      • 2012-07-22
      • 2018-06-03
      • 1970-01-01
      • 2022-05-25
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      相关资源
      最近更新 更多