2016-01-12 1 views

ответ

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 в соответствии с другими ответами, но если вы не можете использовать это, то манипуляции с строкой должны работать.

+1

вы понимаете, что ваш код недействителен. Код Ruby, так как вы пропускаете закрытие '' 'каждый раз, когда вы пишете' '\' '? Даже если вы исправите синтаксис, он все равно не будет работать –

+1

Вот почему я сказал, что вам может потребоваться заменить \ с \\ Отредактировано для того, чтобы быть более полным – Yule

+0

yeap, теперь он работает :) +1. Но теперь он возвращает 'D: \\ Google Диск \\ Образцы \\ Черный Осьминог Звук \\ Leviathan \\ Drums - Kicks "' вместо '" D: \ Google Drive \ Samples \ Black Octopus Sound \ Leviathan \ Drums - Kicks "' –

1

Использование 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 правильно обрабатывает путь файла синтаксис данной операционной системы.

+0

Как вы думаете, повторение уже данного ответа было бы полезным? –

+1

Что заставляет вас поверить, что я повторил ваш ответ? – bogl

+0

Этот код пропускает обозначение привода («D:»), которое в соответствии с вопросом должно быть частью результата. –

Смежные вопросы