[ruby] 변수가 정수인지 확인

Rails 3 또는 Ruby에는 변수가 정수인지 확인하는 기본 제공 방법이 있습니까?

예를 들어

1.is_an_int #=> true
"dadadad@asdasd.net".is_an_int #=> false?



답변

당신은 is_a?방법을 사용할 수 있습니다

>> 1.is_a? Integer
=> true
>> "dadadad@asdasd.net".is_a? Integer
=> false
>> nil.is_a? Integer
=> false


답변

당신은 객체가 있는지 여부를 알고 싶은 경우에 Integer 의미있는 정수로 변환 할 수 있습니다 또는 뭔가 (같은 것들을 포함하지 "hello"하는 to_i에 변환됩니다 0)

result = Integer(obj) rescue false


답변

문자열에 정규식을 사용하십시오.

def is_numeric?(obj)
   obj.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true
end

변수가 특정 유형인지 확인하려면 kind_of?다음을 사용하면됩니다 .

1.kind_of? Integer #true
(1.5).kind_of? Float #true
is_numeric? "545"  #true
is_numeric? "2aa"  #false


답변

변수의 유형이 확실하지 않은 경우 (숫자 문자열 일 수 있음) 매개 변수에 전달 된 신용 카드 번호라고 말하면 원래 문자열이지만 문자열이 아닌지 확인하려고합니다. t 안에 문자가 있으면이 방법을 사용합니다.

    def is_number?(obj)
        obj.to_s == obj.to_i.to_s
    end

    is_number? "123fh" # false
    is_number? "12345" # true

@Benny는이 방법에 대한 감독을 지적합니다.

is_number? "01" # false. oops!


답변

triple equal을 사용할 수 있습니다.

if Integer === 21
    puts "21 is Integer"
end


답변

있습니다 var.is_a? Class(귀하의 경우 🙂 var.is_a? Integer; 청구서에 맞을 수도 있습니다. 또는 Integer(var)구문 분석 할 수없는 경우 예외가 발생하는 곳이 있습니다.


답변

더 “오리지널 타이핑”방식은 respond_to?이 방식 을 사용 하는 것입니다. “정수형”또는 “문자열 형”클래스도 사용할 수 있습니다.

if(s.respond_to?(:match) && s.match(".com")){
  puts "It's a .com"
else
  puts "It's not"
end