2016-08-28 3 views
-2

さて、私が持っているファイルパスを取得し、既知のルートパスを削除して、新しいパスを追加したいと思います。Ruby - 新しいルートパスのパスの代わりのルート

私が例にしようとします:

# This one is a path object 
original_path = '/home/foo/bar/path/to/file.txt' 
# This one is a string 
root_path = '/home/foo/bar/' 
# This is also a string 
new_root = '/home/new/root/' 

だから、私はパスの目的である、original_pathを持っています。そして、これからroot_pathを削除し、その前にnew_rootを適用したいと思います。これどうやってするの?

EDIT:

これは私の本当の問題であり、前に貧しい、について説明して申し訳ありません:

require 'pathname' 

# This one is a path object 
original_path = Pathname.new('/home/foo/bar/path/to/file.txt') 
# This one is a string 
root_path = '/home/foo/bar/' 
# This is also a string 
new_root = '/home/new/root/' 

は今、どのようにそれらを置き換えますか?

+0

であれば、あなたはまだsubの代わりgsubを使用することができます

この

# This one is a path object original_path = '/home/foo/bar/path/to/file.txt' # This one is a string root_path = '/home/foo/bar/' # This is also a string new_root = '/home/new/root/' new_path = original_path.gsub(root_path, new_root) 

編集を行うことができますファイルを新しい場所に移動しようとしているのか、パスの文字列値を変更しようとしていますか? – kcdragon

+0

私は上記の問題を更新しました。私はファイル形式のコンバータを作成しています。基本的に私はパス名を持っています。ルートディレクトリを変更したいので、変換されたファイルを別の場所に置いてディレクトリの構造を '再作成'することができます。 – tedm1106

+0

'root_path'のすべてのファイルを' new_root'にコピーしますか?これはあなたが記述しているものよりはるかに複雑です。 – kcdragon

答えて

1

あなただけの新しい文字列を取得しようとしている場合original_pathPathname

new_path = original_path.sub(root_path, new_root) 
+0

申し訳ありませんが、私は上記の問題を更新していますので、これほど簡単ではありません。 – tedm1106

+0

ありがとう!あなたのソリューションを使って私は大きな問題を解決することができました。 – tedm1106

関連する問題