Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert string numbers( in word format) to integer ruby

Tags:

ruby

If you have a string ten, is it possible to convert it to an integer 10 in Ruby? (maybe in rails?)

I value the developers at tryruby.org, and in their tutorial here, it specifically says "to_i converts things to integers (numbers.)" I am wondering why they didn't say "to_i converts STRINGS to integers (numbers.)"

What variable types can be converted from their type to an integer?

like image 561
chris Frisina Avatar asked Oct 21 '25 11:10

chris Frisina


2 Answers

Check out this gem for handling word to number conversions.

From the readme:

require 'numbers_in_words'
require 'numbers_in_words/duck_punch'

112.in_words
#=> one hundred and twelve
"Seventy million, five-hundred and fifty six thousand point eight nine three".in_numbers
#=> 70556000.893
like image 144
rohit89 Avatar answered Oct 23 '25 03:10

rohit89


How I would have done it.

def n_to_s(int)

    set1 = ["","one","two","three","four","five","six","seven",
         "eight","nine","ten","eleven","twelve","thirteen",
         "fourteen","fifteen","sixteen","seventeen","eighteen",
         "nineteen"]

    set2 = ["","","twenty","thirty","forty","fifty","sixty",
         "seventy","eighty","ninety"]

    thousands = (int/1000)
    hundreds = ((int%1000) / 100)
    tens = ((int % 100) / 10)
    ones = int % 10
    string = ""

    string += set1[thousands] + " thousand " if thousands != 0 if thousands > 0
    string += set1[hundreds] + " hundred" if hundreds != 0
    string +=" and " if tens != 0 || ones != 0 
    string = string + set1[tens*10+ones] if tens < 2
    string += set2[tens]
    string = string + " " + set1[ones] if ones != 0     
    string << 'zero' if int == 0    
    p string
end

for the purpose of testing;

n_to_s(rand(9999))
like image 26
Jesson Foo Avatar answered Oct 23 '25 02:10

Jesson Foo