program story

값이 숫자인지 어떻게 확인할 수 있습니까?

inputbox 2020. 10. 13. 07:43
반응형

값이 숫자인지 어떻게 확인할 수 있습니까?


양식 텍스트 필드에서 반환 된 값이 숫자 즉, 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

반응형