在轨道上的红宝石替换一些字符串

问题描述:

我有两个字符串。其一是:在轨道上的红宝石替换一些字符串

"/system/musics/videos/000/000/001/original/%E5%B9%BF%E5%9C%BA%E8%88%9E%E5%BF%AB%E5%9B%9B_-_%E5%A4%A7%E8%8D%89%E5%8E%9F-%E4%BE%AF%E6%AD%8C.MP3"

第二个是:

"广场舞快四_-_大草原-侯歌.MP3" 

我想:

"/system/musics/videos/000/000/001/original/广场舞快四_-_大草原-侯歌.MP3" 

有谁知道如何查找和替换红宝石字符串?我的想法是用第二个字符串替换最后一个'/'之后的内容。我该怎么做?

当文件名打交道,尤其是如果有你的代码可以运行在多种操作系统上使用机会,使用内置的文件名操作方法dirnamejoin

File.join(
    File.dirname(
    "/system/musics/videos/000/000/001/original/%E5%B9%BF%E5%9C%BA%E8%88%9E%E5%BF%AB%E5%9B%9B_-_%E5%A4%A7%E8%8D%89%E5%8E%9F-%E4%BE%AF%E6%AD%8C.MP3" 
), 
    "广场舞快四_-_大草原-侯歌.MP3" 
) 

的原因是,File.joinFile.dirname都知道在特定操作系统上使用的文件名分隔符,由File::SEPARATORFile::ALT_SEPARATOR提供,使它们能够正确拆分和连接路径。

您还经常会发现File.basenameFile.extname也有用。

+0

我找不到文件,我输出字符串“”/ system/musics/videos/000/000/001/original /%E5%B9%BF%E5%9C%BA%E8%88%9E% E5%BF%AB%E5%9B%9B _%_E5%A4%A7%E8%8D%89%E5%8E%9F-%E4%BE%AF%E6%AD%8C.MP3“”意见,但我需要改变它在控制器。 – user1611237 2013-03-18 09:08:53

first_string = "/system/musics/videos/000/000/001/original/%E5%B9%BF%E5%9C%BA%E8%88%9E%E5%BF%AB%E5%9B%9B_-%E5%A4%A7%E8%8D%89%E5%8E%9F-%E4%BE%AF%E6%AD%8C.MP3" 
second_string = "广场舞快四-_大草原-侯歌.MP3" 

"#{File.dirname(first_string)}/#{second_string}"