我想在不使用ruby to_i
方法的情况下将给定字符串转换为整数。
基本上,我想知道如何实现to_i或者最好的方法是什么。 例如:
a = '1234'
result
a = 1234
提前致谢
答案 0 :(得分:4)
您可以按照
执行此操作2.1.0 :031 > str = "12345"
=> "12345"
2.1.0 :032 > Integer(str) rescue 0
=> 12345
答案 1 :(得分:1)
用于在C中使用此方法执行此操作,它可能有助于您了解:
def too_i(number)
return 0 if (lead = number[/^\d+/]).nil?
lead.bytes.reduce(0) do |acc, chaar|
# 48 is the byte code for character '0'.
acc*10 + chaar - 48
end
end
too_i '123'
# => 123
too_i '123lol123'
# => 123
too_i 'abc123'
# => 0
too_i 'abcd'
# => 0
答案 2 :(得分:0)
要知道什么是主要区别是如果Integer不是一个有效的整数,它将抛出一个异常,但是to_i会尝试尽可能多地进行转换,如果它不是一个有效的整数,你可以从Integer中解救
str = "123"
num = Integer(str) rescue 0 # will give you 123
num = str.to_i # will give you 123
str = "123a"
num = Integer(str) rescue 0 # will give you 0 - will throw ArgumentError in case no rescue
num = str.to_i # will give you 123