Чтобы получить последние n
символы из строки, я предположил, что вы можете использовать
ending = string[-n..-1]
но если строка меньше n
букв, вы получите nil
.
Какие обходные пути доступны?
Предыстория : строки представляют собой простой ASCII, и у меня есть доступ к Ruby 1.9.1, и я использую обычные старые объекты Ruby (без веб-фреймворков).
chars
вместо split.join
работает. Я не думаю, что вам нужно последнее,to_s
если вы используете соединение.n.xpath('ReferenceID').inner_text.split(//).last(7).join.to_s.to_i
Мне нужны были to_s для выполнения to_i для извлечения числового значения."123".split(//).last(5).join
(Ruby 2.0.0)Что ж, самый простой обходной путь, о котором я могу думать, это:
(РЕДАКТИРОВАТЬ:
or
оператор имеет более низкий приоритет, чем присвоение, поэтому обязательно используйте его||
.)источник
string.reverse[0..n].reverse
, что дает мне секунду "подожди, почему он это делает?" (или если бы я не читал это в контексте этого вопроса)||
вместоor
или заключен в круглые скобкиstr[-n..-1] or str
.В чистом Ruby (без Rails) вы можете
Например:
Если вы используете Ruby on Rails, вы можете вызывать методы
first
иlast
строковый объект. Эти методы предпочтительнее, поскольку они краткие и интуитивно понятные.Например:
источник
источник
"abcde".reverse[0,3].reverse
>>> "cde""ab".reverse[0,3].reverse
>>> "ab""a".reverse[0,3].reverse
>>> "a"Вы можете использовать следующий код:
источник
Чтобы получить последние n символов из строки, вы можете сделать это
a [-n, n], если a - массив.
Вот и пример, если он вам нужен.
рубин-1.9.2-p180: 006> a = "911234567890"
=> "911234567890"
ruby-1.9.2-p180: 009> a [-5,5]
=> «67890»
ruby-1.9.2-p180: 010> a [-7,7]
=> "4567890"
источник
nil
возвращается, чего специально пытался избежать этот вопрос.Вы пробовали регулярное выражение?
Регулярное выражение захватывает столько символов, сколько может в конце строки, но не более n. И хранит его в 1 $.
источник
Улучшение ответа EmFi.
источник