В Python, если я хочу получить первые n символы строки минус последний знак, я делаю:
output = 'stackoverflow'
print output[:-1]
Что Ruby эквивалентен?
Я не хочу придираться, но если вы хотите быть более похожими на подход Python, вместо того, чтобы выполнять "StackOverflow" [0 ..- 2]
вы можете выполнить "StackOverflow" [0 ...- 1]
для того же результата.
В Ruby диапазон с тремя точками исключает правильный аргумент, а диапазон с двумя точками включает его. Итак, в случае нарезки строк три точки немного ближе к синтаксису Python.
Ваш текущий Ruby не делает того, что вы описали: он обрезает последний символ, но также переворачивает строку.
Ближайшим эквивалентом фрагмента Python будет
output = 'stackoverflow'
puts output[0...-1]
Вы изначально использовали ...
вместо ...
(что сработало бы, если бы вы сделали output[0..-2]
); первое было закрыто-закрыто, второе - закрыто-открыто. Ломтики и почти все остальное в Python являются закрытыми-открытыми.
Если вы хотите удалить только последний символ, вы также можете выполнить
output.chop
Если все, что вы хотите сделать, это удалить последний символ строка, вы также можете использовать метод 'chop':
puts output.chop
или
puts output.chop!