如何在不使用ruby'to_i'方法的情况下将字符串转换为整数

时间:2015-05-26 12:15:09

标签: ruby-on-rails ruby

我想在不使用ruby to_i方法的情况下将给定字符串转换为整数。

基本上,我想知道如何实现to_i或者最好的方法是什么。 例如:

a = '1234'

result 
a = 1234

提前致谢

3 个答案:

答案 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