我有一个包含路径的字符串:
/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(\/.+)*/)
它应该返回所有事件。