如何从filepath获取父路径?

时间:2016-01-12 09:17:21

标签: ruby string split path

我说我有这条道路:

path = "D:\Google Drive\Samples\Black Octopus Sound\Leviathan\Drums - Kicks\Lev_Kick_A_003.wav"

string/path获取父路径的智能和干净方法是什么?即:

D:\Google Drive\Samples\Black Octopus Sound\Leviathan\Drums - Kicks\

2 个答案:

答案 0 :(得分:2)

使用Pathname

require 'pathname'

path = "D:\\Google Drive\\Samples/Drums - Kicks\\Lev_Kick_A_003.wav"
Pathname(path).parent
#=> #<Pathname:D:\Google Drive\Samples\Drums - Kicks>

Pathname正确处理给定操作系统的特定文件路径语法。

答案 1 :(得分:2)

通过正则表达式或使用split,pop,join,将其作为纯字符串进行多种方式。

path = "D:\\Google Drive\\Samples\\Black Octopus Sound\\Leviathan\\Drums - Kicks\\Lev_Kick_A_003.wav"
items = path.split("\\")
items.pop
result = items.join("\\")
puts result
> D:\Google Drive\Samples\Black Octopus Sound\Leviathan\Drums - Kicks

注意我在所有情况下都用“\\”替换了“\”以逃避斜杠

或者在单行内:

path.split("\\").reverse.drop(1).reverse.join("\\")

最好的方法可能是Pathname作为其他答案,但如果你不能使用它,那么字符串操作应该有效。