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

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

從這個字元串開始:

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

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

file ="[/my/directory/]"

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

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

时间:原作者:0个回答

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]"
原作者:
...