양식 텍스트 필드의 반환 값이 숫자 (예 : 12, 12.5 또는 12.75)인지 단순히 확인하고 싶습니다. 이 값을 확인하는 간단한 방법이 있습니까? 특히 값이 param
으로 표시되는 경우?값이 숫자인지 어떻게 확인할 수 있습니까?
답변
그냥 정규 표현식은, 그것은 그 이상에 대해 생각 가치가 사소한, 그리고 아니다 :
는v =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
루비에서^및 $는 문자열이 아닌 줄의 시작/끝을 나타냅니다. 이는 입력을 위생 처리하는 수단으로 사용하는 것이 비효율적입니다 (http://guides.rubyonrails.org/security.html#regular-expressions 참조). 보다 나은 접근 방법은 'v.to_s = ~/\ A [- +]? \ d * \.? \ d + \ 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
).
제목을 기반으로 루비 (레일이 아님)에 대한 것입니다 ... – Peter
죄송합니다, 이것은 Ruby on Rails ... 기본적으로, 나는 사용자의 입력을 평가할 수 있기를 원합니다. 03 0.3, 2.2 두 번째 작업은 작동하지만 첫 입력 작업을해야합니다. S – user211662
'''Fixnum'''은 부동 소수점으로 작동하지 않습니다. 그러나''숫자 형''은 잘 작동한다. 그래서'''1.234.is_a? Fixnum == false''', 그러나'''1.234.is_a? 숫자 == 참'''. – KurtPreston
당신은 추가 할 수 있습니다
validates_numericality_of :the_field
를 모델에서.
참조 : http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M002172
주어진 문제에 대한 가장 정확한 답은 레일스 양식입니다. –
(저스틴의 의견에 따라 고정) 나는이 하나
제안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
Float :: INFINITY –
나는 보통 정수와 플로트를 사용합니다.
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
문자열 값은 항상 그냥 두 번 문자열을 변환 .to_i
[14] pry(main)> 'Apple'.to_i > 0
=> false
[15] pry(main)> '101'.to_i > 0
=> true
가장자리 케이스는 어떻습니까? 숫자가 0이거나 음수이면 테스트에서 거짓 음성이 표시됩니다. – tsikov
더 나쁜 '1AB2'.to_i는 분명히 정수가 아닌 것 때문에 1을 반환 할 것입니다. –
과 0으로 변환 :
num = '12'
num == num.to_i.to_s
#=> true
num = '3re'
num == num.to_i.to_s
#=> false
정수에서는 그렇게 나쁘지 않습니다.하지만이 조언을 따르기를 원한다면 실패 할 수있는 방법이 많이 있습니다. 질문에 대해 묻는 것) : ' "7"== "7".to_f.to_s # => false' ("7"vs "7.0") –
- 1. 구조체의 값이 변경되었는지 어떻게 확인할 수 있습니까?
- 2. 값이 Perl의 목록에 있는지 어떻게 확인할 수 있습니까?
- 3. 블러 이벤트에서 값이 변경되었는지 어떻게 확인할 수 있습니까?
- 4. ASP.net 드롭 다운 값이 숫자인지 확인해야합니까?
- 5. JTextField가 숫자인지 확인하십시오.
- 6. 변수가 숫자인지 확인
- 7. 어떻게 확인할 수 있습니다
- 8. URL 리디렉션을 어떻게 확인할 수 있습니까?
- 9. Android에서 위도, 경도를 어떻게 확인할 수 있습니까?
- 10. 링크를 이미 클릭했는지 어떻게 확인할 수 있습니까?
- 11. DES 키의 패리티를 어떻게 확인할 수 있습니까?
- 12. 파일이 있는지 어떻게 확인할 수 있습니까?
- 13. 변수가 있는지 어떻게 확인할 수 있습니까?
- 14. NSPasteboard가 업데이트되었는지 어떻게 확인할 수 있습니까?
- 15. 실행중인 TinyMCE의 버전을 어떻게 확인할 수 있습니까?
- 16. JavaScript-Eventhandler가 설정되었는지 어떻게 확인할 수 있습니까?
- 17. GIT URI가 주어지면 어떻게 확인할 수 있습니까?
- 18. 구조체가 초기화되었는지 어떻게 확인할 수 있습니까?
- 19. DB 캐시가 최신인지 어떻게 확인할 수 있습니까?
- 20. 연락처 변경 사항을 어떻게 확인할 수 있습니까?
- 21. 내 svn 연결을 어떻게 확인할 수 있습니까?
- 22. 소켓 수신기를 어떻게 확인할 수 있습니까?
- 23. PayPal ID는 어떻게 확인할 수 있습니까?
- 24. 개체가 속한 클래스를 어떻게 확인할 수 있습니까?
- 25. UISearchDisplayController의 searchResultsTableView가 표시되는지 어떻게 확인할 수 있습니까?
- 26. 페이지로드시 병목을 어떻게 확인할 수 있습니까?
- 27. 전송하지 않을 데이터를 어떻게 확인할 수 있습니까?
- 28. 코드 파일의 유효성을 어떻게 확인할 수 있습니까?
- 29. TFSBuild의 ConfigurationBuild 유형을 어떻게 확인할 수 있습니까?
- 30. 장치의 현재 속도를 어떻게 확인할 수 있습니까?
음, 유일한 코드가 is_a_number 작동한다는 것입니다? 유일한 예외 인 .02 또는 .3 숫자로 작동합니다. – user211662
나는이 솔루션을 더 선호합니다. http://stackoverflow.com/questions/5661466/test-if-string-is-a-number-in- ruby-on-rails/5661695 나는 왜 그렇게 많은 사람들이 정규 표현식이 더 좋을 것이라고 생각하는지 모르겠습니다. –