我有一个代表路径的变量:
path = "/foo/bar"
我想删除路径的最后一部分。我用这样的gsub!
尝试了它:
path.gsub!("/bar","")
但是如果"/bar"
不在字符串的末尾,我也想抛出一个错误。我也试过path.split("/")
,但这似乎不是很有效。该方法被称为很多,因此就地方法将是完美的。另一种变化是只删除每个字符串,直到"/"
被击中,而不会抛出错误。
这样做的快速且内存有效的方法是什么?
答案 0 :(得分:2)
为了得到你想要的东西,你可以这样做:
File.dirname("/foo/bar")
# => "/foo"
提出错误是另一回事:
raise unless "/foo/bar".end_with?("/bar")
答案 1 :(得分:2)
您可以使用正则表达式仅匹配字符串的末尾:
'/foo/bar'.gsub!(/\/bar\z/, '')
#=> '/foo'
如果gsub!
没有匹配,nil
会返回'/foo/blub'.gsub!(/\/bar\z/, '') || raise(StandardError)
#=> StandardError: StandardError
,只需将其与提出错误相结合即可:
$('#ulListMahalle').on('click', 'li', function () {
alert("li clicked");
});
答案 2 :(得分:1)
您可以使用String#rindex
查找/
的最后一次出现,并使用该值获取前面的子字符串:
path[0, path.rindex("/")]