Там не встроенная функция, чтобы сказать, если строка фактически целое , но вы можете легко сделать свой собственный:
class String
def int
Integer(self) rescue nil
end
end
Это работает, потому что метод Kernel Integer()
выдает ошибку, если строка не может быть преобразована в целое число, а строка inline rescue nil
превращает эту ошибку в нуль.
Integer("1") -> 1
Integer("1x") -> nil
Integer("x") -> nil
и, таким образом:
"1".int -> 1 (which in boolean terms is `true`)
"1x".int -> nil
"x".int -> nil
Вы можете изменить функцию, чтобы вернуть true
в истинных случаях, вместо самого целого, но если вы проверяете строку, чтобы увидеть, если это целое число , скорее всего, вы хотите использовать это целое для чего-то! Я очень часто делать такие вещи, как это:
if i = str.int
# do stuff with the integer i
else
# error handling for non-integer strings
end
Хотя если задание в тестовой позиции оскорбляет вас, вы всегда можете сделать это следующим образом:
i = str.int
if i
# do stuff with the integer i
else
# error handling for non-integer strings
end
Так или иначе, этот метод не только преобразование один раз, который, если вам нужно сделать много из них, может быть значительным преимуществом в скорости.
[Измененное имя функции от int?
к int
, чтобы избежать подразумевая, что должен возвращать только истина/ложь.]
Google хорош, но не на первое место искать то, что находится в стандартных и основных библиотеках Ruby. Я бы рекомендовал перейти к первоисточнику: `ri` вашей собственной машины или [сайт rubydoc] (http://www.ruby-doc.org/).Ввод `ri is_a?` В вашей командной строке может вернуть пару хитов, причем важный из них - `Object.is_a?` – 2010-11-26 03:31:51
Связанный с вами вопрос: что вы пытаетесь сделать: [Извлечь число из шаблона строки с использованием регулярного выражения ] (http://stackoverflow.com/questions/694176/retrieve-number-from-the-string-pattern-using-regular-expression) – 2010-11-26 07:53:53