Что такое Ruby-эквивалент вывода Python [: - 1]? - PullRequest
5 голосов
/ 21 марта 2010

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

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

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

Ответы [ 5 ]

11 голосов
/ 21 марта 2010

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

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

4 голосов
/ 21 марта 2010

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

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

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

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

2 голосов
/ 21 марта 2010

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

1 голос
/ 21 марта 2010

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

output.chop
1 голос
/ 21 марта 2010

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

puts output.chop

или

puts output.chop!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...