1
A
回答
1
使用內置驗證器中的內核來做到這一點的另一種方式,就像一個想法一樣。
但是,我認爲應該避免構建其異常功能的代碼,其他解決方案可能是首選。
def determine_type x
[:Integer, :Float, :Rational].each do |c|
return c if send(c, x) rescue ArgumentError
end
return :String
end
p determine_type(1) #=> :Integer
p determine_type('1') #=> :Integer
p determine_type('1.0') #=> :Float
p determine_type('1/1') #=> :Rational
p determine_type('ccc') #=> :String
6
{Rational => :to_r, Integer => :to_i, Float => :to_f }.each do |key, sym|
["1/2", "1", "0.9"].each do |item|
puts "#{item} is #{key}" if item.send(sym).to_s == item
end
end
#1/2 is a Rational
#1 is a Integer
#0.9 is a Float
爲「不是一個數字」的情況下,我認爲這很容易使用regular expressions來增強位
2
更靈活,更安全的方法:
def parse(data)
h = {
"Float" => /\A\d+\.\d+\Z/,
"Integer" => /\A\d+\Z/,
"Rational" => /\A\d+\/\d+\Z/
}
h.each do |type, regex|
return type if data.match regex
end
return "Not a number"
end
parse("1") # => "Integer"
parse("1.2") # => "Float"
parse("1/2") # => "Rational"
parse("1,2") # => "Not a number"
parse("b") # => "Not a number"
你可以很容易地修改的鍵h
哈希到如果你想它返回實際的類而不是字符串。
+1
良好的正則表達式解決方案,但如果使用Ruby的case語句,它可能會更容易閱讀。 – hirolau
相關問題
- 1. 如何確定字符串表示中的圖元類型?
- 2. 如何確定DataColumn的類型是數字,字符串還是日期時間?
- 3. 確定包含在字符串中的數據類型
- 4. 確定Oracle中字符串值的數據類型
- 5. 如何確定一個字符串的模式類型
- 6. 如何確定字符串的內容類型
- 7. 從字符串中確定確定位置中的數字 - Java
- 8. 如何確定變量數據類型?如何轉換爲字符串?
- 9. 如何迭代打字稿中的字符串文字類型
- 10. 如何打印類型(任何字符串(IO字符串))?
- 11. c中的字符串數據類型
- 12. java中的字符串數據類型
- 13. SPSS中如何確定數字和字符串變量?
- 14. 如何將字符串轉換爲Typescript中的字符串文字類型?
- 15. 打字稿中的字符串類型
- 16. 字符串類型
- 17. 字符串類型
- 18. 確定字符串
- 19. 類型爲字符串或數字
- 20. 如何擴展HashMap以允許字符串,字符串類型
- 21. 如何在字符串類型的數組中插入數據?
- 22. 如何確定一個字符串是否是ksh的數字
- 23. AutoHotKey如何確定複製的字符串是否是數字?
- 24. 如何確定一個字符串包含字符串
- 25. 如何確定控制器類給定的URL字符串
- 26. 如何將字符串數據類型轉換爲從數據表到SQL表的字符串數據類型
- 27. 從字符串中獲取數據字符串整型數據類型
- 28. 如何把int類型數組放入字符串類型arrayadapter?
- 29. cocoa:如何將整數類型轉換爲字符串類型?
- 30. 如何從字符串c獲得自定義類的類型#
在你的情況,我認爲你應該通過實施你自己的方法來更好地解析字符串。如果你有興趣,我可以給你一個答案。 – Agis