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

She*_* Yu 38 ruby string substring idiomatic slice

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

例:

s = "hello world"
s[6..-1] # <-- "world"
Run Code Online (Sandbox Code Playgroud)

还有什么比这更好的s[6..-1]吗?

Pau*_*rit 7

我认为不是.

这似乎Range是更好的方法.

  • 对不起,你能澄清一下吗?你认为```范围```(我在问题中的方式)是最好的方法吗? (2认同)

Yev*_*yev 6

如果你愿意,这里的'更好'.您可以扩展ruby String类,然后将此方法用于您的代码.例如:

class String
  def last num
    self[-num..-1]
  end
end
Run Code Online (Sandbox Code Playgroud)

然后:

s = "hello world"
p s.last(6)
Run Code Online (Sandbox Code Playgroud)

  • OP没有请求如何获取最后的X个字符.他们询问如何将字符从X到字符串的末尾 (6认同)

vic*_*azo 6

Ruby 2.6 引入了无穷范围,这基本上消除了必须指定结束索引的需要。在你的情况下,你可以这样做:

s = "hello world"
s[6..]
Run Code Online (Sandbox Code Playgroud)


Sim*_*ang 5

要从某个范围获取字符串:

s = 'hello world'
s[5..s.length - 1] # world
Run Code Online (Sandbox Code Playgroud)

但是,如果您只想得出最后的结论:

'hello world'.split(' ').last # world
Run Code Online (Sandbox Code Playgroud)

  • 应该是s [5..s.length-1] (2认同)