Ruby,删除部分文件路径

use*_*024 9 ruby

$local_path_to_css_file = File.expand_path(filename)
Run Code Online (Sandbox Code Playgroud)

给我

A/B/C/D/CSS/filename
Run Code Online (Sandbox Code Playgroud)

要么

A/B/C/D/CSS/layouts/filename
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

css/filename
Run Code Online (Sandbox Code Playgroud)

要么

css/layouts/filename
Run Code Online (Sandbox Code Playgroud)

直到删除所有内容css/.

Ser*_*yuk 20

您可以使用 Pathname

require 'pathname'

absolute_path = Pathname.new(File.expand_path(filename))
project_root  = Pathname.new("/A/B/C/D") # you can set up root somewhere else, e.g. at point where script starts
relative      = absolute_path.relative_path_from(project_root)

relative.to_s # => "css/filename"
Run Code Online (Sandbox Code Playgroud)