2014-03-18 125 views
1

好的,如果我有一個字符串是一個完整的文件路徑,如"Folder/New Folder/test.csv"。我如何獲得/'s之間的所有內容?所以得到"New Folder"如何獲取Ruby中兩個字符之間的字符串?

謝謝!

+0

http://stackoverflow.com/questions/1370988/does-ruby-have-the-ability-to-split-a-directory-string,HTTP ://stackoverflow.com/questions/7169923/parsing-string-pathname-with-ruby – user2864740

回答

0

只是做

File.dirname("Folder/New Folder/test.csv").split('/')[-1] 
# => "New Folder" 
0

如果你想使用正則表達式:

input = "Folder/New Folder/test.csv" 
print input.scan(/\/(.*)\//).flatten 
0

爲此,您可以輕鬆地使用正則表達式。請注意,這將產生第一個和第二個/之間的任何內容。所以如果你的字符串是"some/longer/path/than/original",它會產生"longer"

path = "Folder/New Folder/test.csv" 
p path[%r{/([^/]+)/}, 1] 
# => "New Folder" 
+0

我對你感到嫉妒,因爲你非常擅長* Regex * ..我不是。 :p –

2

無需使用正則表達式在所有...

> File.basename(File.dirname("Folder/New Folder/test.csv")) 
=> "New Folder" 
2

你不一定必須使用正則表達式來完成這項任務。

字符串分割

path = "Folder/New Folder/test.csv" 
puts path.split('/')[1] 

文件操作

path = File.dirname("Folder/New Folder/test.csv") 
puts File.basename(path) 

正則表達式

path = "Folder/New Folder/test.csv" 
puts path.scan(/\/(.*)\//)[0] 

使用任何這些方法,你會得到下面的輸出:

#=> New Folder 
相關問題