Что Ruby эквивалентен из вывода Python [:-1]?

В Python, если я хочу получить первые n символы строки минус последний знак, я делаю:

output = 'stackoverflow'
print output[:-1]

Что Ruby эквивалентен?

5
задан Thierry Lam 20 March 2010 в 21:46
поделиться

5 ответов

Я не хочу придираться, но если вы хотите быть более похожими на подход Python, вместо того, чтобы выполнять "StackOverflow" [0 ..- 2] вы можете выполнить "StackOverflow" [0 ...- 1] для того же результата.

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

11
ответ дан 18 December 2019 в 08:27
поделиться

Ваш текущий Ruby не делает того, что вы описали: он обрезает последний символ, но также переворачивает строку.

Ближайшим эквивалентом фрагмента Python будет

output = 'stackoverflow'
puts output[0...-1]

Вы изначально использовали ... вместо ... (что сработало бы, если бы вы сделали output[0..-2]); первое было закрыто-закрыто, второе - закрыто-открыто. Ломтики и почти все остальное в Python являются закрытыми-открытыми.

4
ответ дан 18 December 2019 в 08:27
поделиться

"stackoverflow"[0..-2] вернет "stackoverflo"

2
ответ дан 18 December 2019 в 08:27
поделиться

Если вы хотите удалить только последний символ, вы также можете выполнить

output.chop
1
ответ дан 18 December 2019 в 08:27
поделиться

Если все, что вы хотите сделать, это удалить последний символ строка, вы также можете использовать метод 'chop':

puts output.chop

или

puts output.chop!
1
ответ дан 18 December 2019 в 08:27
поделиться