只是想知道是否有一个Ruby习惯用法从索引中提取子字符串直到字符串结尾。我知道str[index..-1]
通过将范围对象传递给String
的{{1}}方法来工作,但它有点笨重。例如,在python中,您可以编写[]
来隐式地获取字符串的其余部分。
示例:
str[index:]
有什么比s = "hello world"
s[6..-1] # <-- "world"
更好的吗?
答案 0 :(得分:7)
我认为不是。
似乎Range
是更好的方法。
答案 1 :(得分:6)
如果你愿意,这里的'更好'。您可以扩展ruby String类,然后将此方法用于您的代码。例如:
class String
def last num
self[-num..-1]
end
end
然后:
s = "hello world"
p s.last(6)
答案 2 :(得分:3)
从范围中获取字符串:
s = 'hello world'
s[5..s.length - 1] # world
但是,如果你想要得到你可以使用的最后一个词:
'hello world'.split(' ').last # world
答案 3 :(得分:2)
您可以扩展String
课程。不确定它是否是一个红宝石成语:
class String
def last(n)
self[(self.length - n)..-1]
end
end
答案 4 :(得分:1)
Rails的activesupport
库(可以作为独立于Rails的gem安装)向字符串添加了from
方法:
> s = "hello world"
"hello world"
> s.from(6)
"world"
https://api.rubyonrails.org/classes/String.html#method-i-from
答案 5 :(得分:0)
Ruby 2.6引入了endless ranges,基本上消除了必须指定结束索引的麻烦。就您而言,您可以执行以下操作:
s = "hello world"
s[6..]