从右侧删除字符,直到达到特殊字符

时间:2015-12-13 16:16:31

标签: ruby string

我有一个代表路径的变量:

path = "/foo/bar"

我想删除路径的最后一部分。我用这样的gsub!尝试了它:

path.gsub!("/bar","")

但是如果"/bar"不在字符串的末尾,我也想抛出一个错误。我也试过path.split("/"),但这似乎不是很有效。该方法被称为很多,因此就地方法将是完美的。另一种变化是只删除每个字符串,直到"/"被击中,而不会抛出错误。

这样做的快速且内存有效的方法是什么?

3 个答案:

答案 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("/")]