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"

第二个是:

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

我想得到:

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

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

4

2 回答 2

3
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}"
于 2013-03-18T06:58:43.683 回答
0

在处理文件名时,特别是如果您的代码有可能在多个操作系统上使用,请使用内置的文件名操作方法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.join并且File.dirname知道特定操作系统上使用的文件名分隔符,由File::SEPARATORand提供File::ALT_SEPARATOR,使它们能够正确拆分和连接路径。

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

于 2013-03-18T08:26:55.673 回答