string - ruby 從後面的正斜杠中刪除所有內容

  显示原文与译文双语对照的内容
137 3

從這個字元串開始:


file ="[/my/directory/file-*.log]"



我想刪除後面的/ 和右方括弧之後的所有內容,因此返回的字元串是:


file ="[/my/directory/]"



我想知道是否有人可以推薦最安全的方法來做這個。

我一直在試用 chomp,但是我沒有得到任何地方,gsub 或者 sub 似乎也不適合。

时间: 原作者:

148 2

你可以使用 File.dirname:


File.dirname("/my/directory/file-*.log")


=>"/my/directory"



149 0

以下是三個非正則表達式解決方案:


file[0..file.rindex('/')] <<']'



file.sub(file[file.rindex('/')+1..-2], '')



"[#{File.dirname(file[1..-2])}]"



全部返回 "[/my/directory/]"

133 1

如果它卡在括弧內,你總是可以編寫一個調用 File.dirname的自定義替換函數:


def squaredir(file)


 file.sub(/[([^]]+)]/) do |m|


 '[%s]' % File.dirname($1)


 end


end



然後你得到了:


squaredir("[/my/directory/file-*.log]")


# =>"[/my/directory]"



原作者:
...