-1

私は次のような文字列を持っています:

str = "/some/path/to/some/file.ext"

結果は次のようになります。

[path, dir, file]
=> ["/some/path/to", "some", "file.ext"]

私の現在のコード:

chunks = str.split '/'
=> ["", "some", "path", "to", "some", "file.ext"]

file = chunks.pop
=> "file.ext"

dir = chunks.pop
=> "some"

path = chunks.join '/'
=> "/some/path/to"

しかし、それは醜くて遅いです。

正規表現も試しFile.splitましたが、さらに醜い混乱が発生しました。

解決策は何ですか?

4

1 に答える 1

4

使用pathname

require 'pathname'

str = "/some/path/to/some/file.ext"

p = Pathname.new str

path, dir, file = [p.dirname.parent, p.parent.basename, p.basename].map(&:to_s)

p( [path, dir, file] )

それはすべてのバージョンでうまく動作します。

ここでは、実際の動作を確認できます

于 2012-10-31T15:52:56.973 に答える