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