必要に応じて末尾のスラッシュを追加しようとしています:
a = '/var/www'
a.gsub
...
やり方がわかりません。
a = File.join(a, "")
a
迅速でシンプルで、パスセパレーターで終わることを保証する効果があります。つまり、 であっても であっても同じ結果が得a
られ"/var/www"
ます"/var/www/"
。
これは、上記の Joe White のコメントと同じです。なぜ彼がそれを回答として提出しなかったのか、私にはわかりません。
奇妙なことに、Pathname ライブラリは同じことを行う便利な方法を提供していません。
これはもう少し読みやすいバージョンです
path << '/' unless path.end_with?('/')
なぜgsubを使いたいのですか?
sub
notを使用してくださいgsub
。sub!
ますgsub!
。置換を行っていないため、必要に応じてスラッシュを追加するだけです。
path << '/' if path[-1] != '/' # Make sure path ends with a slash
更新:古いバージョンのRuby(1.8.x)と互換性を持たせるには、少し変更します。
path << '/' if path[-1].chr != '/' # Make sure path ends with a slash
次のスクリプトは、これを行う方法を示しています。
a="/var/www";
print a + "\n";
a = a.gsub(/([^\/]$)/, '\1/');
print a + "\n";
a = a.gsub(/([^\/]$)/, '\1/');
print a + "\n";
以下を出力します。
/var/www
/var/www/
/var/www/
/
行の最後の文字 ( でない場合) を同じ文字と末尾の文字で置き換えることによって機能し/
ます。
ミックスに別のものを介して、すでにカバーされているいくつかの異なる方法があります。
(a << '/').gsub!('//','/')
また
(a << '/').squeeze('/')
ただし、どちらも「//」を文字列のどこでも「/」に変換することに注意してください。ただし、パスのみを扱っている場合は、問題が発生する可能性はほとんどありません。
"/var/www".gsub(/[^\/]$/, '\1/') #=> "/var/www/"
"/var/www/".gsub(/[^\/]$/, '\1/') #=> "/var/www/"
連結 (<<) よりもワンライナーの方が簡単な、非常に単純な gsub。
a = '/var/www'
a.gsub('/?$', '/')
/
これは単に文字列の末尾にあるオプションの文字を見つけて、