从索引到字符串结尾的子字符串的Ruby习惯用法

时间:2013-02-13 06:28:49

标签: ruby string substring slice idiomatic

只是想知道是否有一个Ruby习惯用法从索引中提取子字符串直到字符串结尾。我知道str[index..-1]通过将范围对象传递给String的{​​{1}}方法来工作,但它有点笨重。例如,在python中,您可以编写[]来隐式地获取字符串的其余部分。

示例:

str[index:]

有什么比s = "hello world" s[6..-1] # <-- "world" 更好的吗?

6 个答案:

答案 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..]
相关问题