반응형
값이 숫자인지 어떻게 확인할 수 있습니까?
양식 텍스트 필드에서 반환 된 값이 숫자 즉, 12, 12.5 또는 12.75인지 확인하고 싶습니다. 이를 확인하는 간단한 방법이 param
있습니까? 특히 값이 ?
그냥 regexp로, 사소하고 그 이상으로 생각할 가치가 없습니다.
v =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
(Justin의 의견에 따라 수정 됨)
당신이 사용할 수있는
12.is_a? Numeric
( Numeric
정수 및 부동 소수점에서 작동합니다.)
유효한 숫자의 표현을 포함 할 수있는 문자열로 도착하면 다음을 사용할 수 있습니다.
class String
def valid_float?
true if Float self rescue false
end
end
그리고 '12'.valid_float?
당신이 (예를 들어있는 유효한 float로 문자열을 변환 할 수있는 경우에 true를 돌려줍니다 to_f
).
요즘은 보통 Integer와 Float 만 사용합니다.
1.9.2p320 :001 > foo = "343"
=> "343"
1.9.2p320 :003 > goo = "fg5"
=> "fg5"
1.9.2p320 :002 > Integer(foo) rescue nil
=> 343
1.9.2p320 :004 > Integer(goo) rescue nil
=> nil
1.9.2p320 :005 > Float(foo) rescue nil
=> 343.0
1.9.2p320 :006 > Float(goo) rescue nil
=> nil
다음을 추가 할 수 있습니다.
validates_numericality_of :the_field
모델에서.
참조 : http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M002172
문자열을 두 번 변환하십시오.
num = '12'
num == num.to_i.to_s
#=> true
num = '3re'
num == num.to_i.to_s
#=> false
나는 이것을 제안 할 것이다
def is_number?
self.to_f == self
end
> 15.is_number?
=> true
> 15.0.is_number?
=> true
> 'Not a number'.is_number?
=> false
> (0/0.0).is_number?
=> false
irb(main):005:0> 1.1.is_a? Numeric
=> true
irb(main):006:0> 1.is_a? Numeric
=> true
irb(main):007:0> 'asd'.is_a? Numeric
=> false
문자열 값은 항상 .to_i를 사용하여 0으로 변환됩니다.
[14] pry(main)> 'Apple'.to_i > 0
=> false
[15] pry(main)> '101'.to_i > 0
=> true
참고 URL : https://stackoverflow.com/questions/2095493/how-can-i-check-if-a-value-is-a-number
반응형
'program story' 카테고리의 다른 글
LINQ를 사용하여 항목을 목록 맨 위로 이동 (0) | 2020.10.13 |
---|---|
부트 스트랩 navbar 활성 상태가 작동하지 않음 (0) | 2020.10.13 |
익명 메서드로 값을 반환하는 방법은 무엇입니까? (0) | 2020.10.12 |
마지막 마이그레이션 추가 명령을 실행 취소하려면 어떻게합니까? (0) | 2020.10.12 |
'마스킹 된'비트 세트 증가 (0) | 2020.10.12 |