2012-02-27 2 views
1

문자열이 "08"이고이 문자열이 숫자인지 알고 싶습니다. Rails 3.1에서 어떻게 할 수 있습니까?문자열이 숫자인지 어떻게 알 수 있습니까?

+1

문자열이있는 경우 문자열입니다. 무엇을 알아야합니까? 문자열에 숫자가 포함되어 있으면? – lucapette

+0

레일즈를 사용하고 있기 때문에, * 및 * 어디에서 * 이렇게하려고하는지는 중요하다고 생각합니다. 즉, 데이터베이스에 값을 저장했기 때문입니까? –

답변

4

할 수있는 또 다른 방법이 그것을 결정하기 위해 루비를 떠날 것입니다 validates_format_of :string, :with => /[0-9]/과 같은 숫자를 입력하는 것만 큼 간단 할 것입니다.

+0

+1 창조적 인 게으름. 그리고 '+ 3'과 '10e6'을 따라 잡기 위해. –

3

당신은 정규 표현식을 사용할 수 있습니다

begin 
    Float(string) 
    # String is numeric 
rescue ArgumentError, TypeError 
    # String is not numeric 
end 
+0

지나치게 복잡해 보입니다. 왜 그냥 가지 않을까요? str = ~/^ (\ d +) $/ – Forrest

+0

@Forrest 10 진수 일 수 있으므로 정규 표현식이 일치하지 않습니다. –

+0

@Forrest :'/^\ d + $'는 음수 값과도 일치하지 않습니다. OTOH,'/^-? (\ d + (\. \ d +)? \. \ d +) $ /'는 지수 표기법을 잃어 버리고'+ 3 '. –

0

사용자 입력을 검증하고자하는 경우 :

str = "08" 
if str =~ /^-?(\d+(\.\d+)?|\.\d+)$/ 
    # string is numeric 
else 
    # string is not 
end 
관련 문제