首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Ruby中拆分目录字符串?

如何在Ruby中拆分目录字符串?
EN

Stack Overflow用户
提问于 2009-09-03 01:14:50
回答 3查看 17.2K关注 0票数 22

在ruby中,我可以做到

File.dirname("/home/gumby/bigproject/now_with_bugs_fixed/32/FOO_BAR_2096.results")

并获取

"/home/gumby/bigproject/now_with_bugs_fixed/32"

但是现在我想把目录字符串分割成单独的文件夹组件,比如

["home", "gumby", "bigproject", "now_with_bugs_fixed", "32"]

有没有其他方法可以做到这一点而不是使用

directory.split("/")[1:-1]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-03 01:34:07

没有内置的函数可以将路径拆分到其组件目录中,但您可以尝试以跨平台的方式伪造它们:

directory_string.split(File::SEPARATOR)

这适用于相对路径和非Unix平台,但是对于以"/"作为根目录的路径,您将获得一个空字符串作为数组中的第一个元素,而我们将使用"/"

directory_string.split(File::SEPARATOR).map {|x| x=="" ? File::SEPARATOR : x}

如果像上面提到的那样,您只想要不带根目录的目录,那么您可以将其更改为从第一个元素开始选择。

directory_string.split(File::SEPARATOR).map {|x| x=="" ? File::SEPARATOR : x}[1..-1]
票数 25
EN

Stack Overflow用户

发布于 2014-02-05 17:16:02

正确的答案是使用Ruby的Pathname (从1.8.7开始的内置类,而不是gem)。

请参阅代码:

require 'pathname'

def split_path(path)
    Pathname(path).each_filename.to_a
end

这样做将丢弃路径是绝对路径还是相对路径的信息。要检测这一点,可以在Pathname上调用absolute?方法。

来源:https://ruby-doc.org/stdlib-2.3.3/libdoc/pathname/rdoc/Pathname.html

票数 41
EN

Stack Overflow用户

发布于 2021-03-20 11:11:05

您需要:

File.split( "/home/gumby/bigproject/now_with_bugs_fixed/32/FOO_BAR_2096.results").first
=> "/home/gumby/bigproject/now_with_bugs_fixed/32"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1370988

复制
相关文章

相似问题

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