パスを含む文字列があります:
/var/www/project/data/path/to/file.mp3
「/data」で始まる部分文字列を取得し、その前にすべて削除する必要があります。したがって、取得する必要があるのは/data/path/to/file.mp3
.
最速の解決策は何ですか?
'/var/www/project/data/path/to/file.mp3'.match(/\/data.*/)[0]
=> "/data/path/to/file.mp3"
次のように簡単です。
string = '/var/www/project/data/path/to/file.mp3'
path = string[/\/data.*/]
puts path
=> /data/path/to/file.mp3
正規表現を使用するのは良い方法です。私はrubyに精通していませんが、rubyには「substring()」(おそらくrubyの別名)のような関数が必要だと思います。
javascriptを使用したデモは次のとおりです。
var str = "/var/www/project/data/path/to/file.mp3";
var startIndex = str.indexOf("/data");
var result = str.substring(startIndex );
そしてjsfiddleデモのリンク
rubyのコードは似ていると思います。ドキュメントを確認できます。お役に立てば幸いです。
これを試してください:
"/var/www/project/data/path/to/file.mp3".scan(/\/var\/www(\/.+)*/)
すべてのオカレンスが返されるはずです。