Каков эквивалент Ruby для substr? - PullRequest
2 голосов
/ 31 января 2012

Я пытаюсь реализовать следующий код в Ruby и застрять на нем.

Я посмотрел документацию, но все они имеют дело со строкой, а не с объектом.

PHP код:

if ( substr($new_price, -2) != '00' ) {

Код Ruby, который я пробовал:

if new_price[-2,2] != '00'
if new_price.to_s.slice[-2,2] != '00'

Edit:

Для текущего использования, которое просто чтобы проверить, есть ли цена в десятичных дробях или нет, я переключился на это:

if new_price.ceil != new_price

Мне все еще интересно, как сделать это правильно в Ruby.

Ответы [ 3 ]

4 голосов
/ 31 января 2012

В Ruby вы можете получить два последних элемента строки с (например) следующим кодом:

price = '200'
puts price[-2..-1]
#=> 00

Вы также можете добавить метод last(n) в класс String, например:

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

Тогда вы можете написать такой код:

puts price.last(2)
#=> 00

puts price.last(100)
#=> 200
2 голосов
/ 31 января 2012
unless new_price.to_s.end_with?('00')
0 голосов
/ 31 января 2012

Попробуйте:

if new_price.to_s.slice(-2, 2) != '00'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...