以该字符串开头:
file = "[/my/directory/file-*.log]"
我想删除尾随/
和方括号后的所有内容,因此返回的字符串为:
file = "[/my/directory/]"
我想知道是否有人可以推荐最安全的方法。
我一直在尝试chomp
,但是我什么都没做,gsub
或sub
似乎都不适合。
答案 0 :(得分:4)
您可以使用File.dirname
:
File.dirname("/my/directory/file-*.log")
=> "/my/directory"
答案 1 :(得分:2)
以下是三种非正则表达式解决方案:
file[0..file.rindex('/')] << ']'
file.sub(file[file.rindex('/')+1..-2], '')
"[#{File.dirname(file[1..-2])}]"
全部返回"[/my/directory/]"
。
答案 2 :(得分:1)
如果卡在方括号内,则您始终可以编写一个自定义替换函数,该函数调用File.dirname
:
def squaredir(file)
file.sub(/\[([^]]+)\]/) do |m|
'[%s]' % File.dirname($1)
end
end
然后您得到这个:
squaredir("[/my/directory/file-*.log]")
# => "[/my/directory]"
答案 3 :(得分:0)
file.split('/').take(file.split('/').size - 1).join('/') + ']'
=> "[/my/directory]"
/
分隔的字符串数组/
]
答案 4 :(得分:-1)
file = "[/my/directory/file-*.log]"
file.sub(/^(.+)\/([^\/]+)\]/, '\1/]')
=> "[/my/directory/]"