2016-09-12 2 views

Antwort

1

Kombinieren String#split mit File.dirname:

path = "tmp/guava/metadata/en-US/images/icon.png" 

parts = File.dirname(path).split('/') 
# => ["tmp", "guava", "metadata", "en-US", "images"] 

parts.last(2) 
# => ["en-US", "images"] 
+0

Was ist der Grund, hier 'File.dirname' zu ​​benutzen? "tmp/guava/metadata/de-DE/images/icon.png" .split ('/') [- 3 ...- 1] 'würde tun. – mudasobwa

+0

@mudasobwa Es ist eher eine portable Lösung, da Windows ziemlich wackelig werden kann. 'File.split' zieht nur einen Teil nach dem anderen ab oder ich empfehle das zu verwenden. – tadman

0

Sie split verwenden können, finden Methode

str = 'tmp/guava/metadata/en-US/images/icon.png' 


str.split('/')[3] 
#=> 'en-US' 

str.split('/')[4] 
#=> 'images' 

Wenn Sie auflisten möchten alles, was Sie so etwas tun kann:

str.split('/').each { |el| puts "#{el} \n" } 
    #tmp 
    #guava 
    #metadata 
    #en-US 
    #images 
    #icon.png 
Verwandte Themen