Strictly convert string to integer (or nil)

后端 未结 3 865
醉酒成梦
醉酒成梦 2020-12-29 19:34

For web programming, numbers come in as strings. but to_i will convert \"5abc\" to 5 and \"abc\" to 0, both

3条回答
  •  醉酒成梦
    2020-12-29 19:52

    Since at least Ruby 2.6, the kernel functions Integer, Float, etc. accept an exception keyword argument that does the job:

    > Integer('42', exception: false)
    => 42
    > Integer('x42', exception: false)
    => nil
    > Integer('x42')
    ArgumentError (invalid value for Integer(): "x42")
    > Integer('', exception: false)
    => nil
    > Integer('')
    ArgumentError (invalid value for Integer(): "")
    > Integer(nil, exception: false)
    => nil
    > Integer(' 42 ', exception: false)
    => 42
    > Integer(' 4 2 ', exception: false)
    => nil
    

提交回复
热议问题