Подтвердить что ты не робот

Идиома Ruby для подстроки от индекса до конца строки

Просто интересно, есть ли идиум Ruby для извлечения подстроки из индекса до конца строки. Я знаю str[index..-1], который работает, передавая объект диапазона методу String [], но он немного неуклюж. Например, в python вы можете написать str[index:], который неявно предоставит вам остальную часть строки.

Пример:

s = "hello world"
s[6..-1] # <-- "world"

Есть ли что-нибудь приятнее, чем s[6..-1]?

4b9b3361

Ответ 1

Я думаю, что это не так.

Кажется, что Range лучший способ сделать это.

Ответ 2

Вот "лучше", если хотите. Вы можете расширить класс Ruby String, а затем использовать этот метод в своем коде. Например:

class String
  def last num
    self[-num..-1]
  end
end

И затем:

s = "hello world"
p s.last(6)

Ответ 3

Чтобы получить строку из диапазона:

s = 'hello world'
s[5..s.length - 1] # world

Однако, если вы просто хотите получить последнее слово:

'hello world'.split(' ').last # world

Ответ 4

Вы можете расширить класс String. Не уверен, что это рубиновая идиома:

class String
  def last(n)
    self[(self.length - n)..-1]
  end
end

Ответ 5

Библиотека activesupport Rails (которую можно установить как гем, независимый от Rails) добавляет метод from в строки:

> s = "hello world"
"hello world"
> s.from(6)
"world"

https://api.rubyonrails.org/classes/String.html#method-i-from

Ответ 6

В Ruby 2.6 введены бесконечные диапазоны, которые в основном устраняют необходимость указывать конечный индекс. В вашем случае вы можете сделать:

s = "hello world"
s[6..]