Ответ 1
Нет, вам нужно написать функцию самостоятельно. Самое близкое к тому, что вы хотите, number_to_human
, но это не преобразует 1
в One
.
Вот некоторые URL-адреса, которые могут быть полезны:
Кто-нибудь знает метод преобразования числовых слов в числовые слова на русском языке в rails?
Я нашел некоторые скрипты Ruby для преобразования числовых символов в английские слова для соответствующих слов.
Вместо того, чтобы писать script в рубине, я чувствую, что доступна прямая функция.
Eg. 1 → Один, 2 → Два.
Нет, вам нужно написать функцию самостоятельно. Самое близкое к тому, что вы хотите, number_to_human
, но это не преобразует 1
в One
.
Вот некоторые URL-адреса, которые могут быть полезны:
Используйте numbers_and_words драгоценный камень, https://github.com/kslazarev/numbers_and_words
Есть еще очеловечить камень, который делает именно то, что вы хотите...
require 'humanize'
23.humanize # => "twenty three"
0.42.humanize(decimals_as: :digits) # => "zero point four two"
Вы также можете использовать to_words gem.
Этот Gem преобразует целые числа в слова.
например.
1.to_words # one ,
100.to_words # one hundred ,
101.to_words # one hundred and one
Он также преобразует отрицательные числа.
Как насчет этого? Написано для преобразования чисел в слова в индийской системе, но может быть легко изменено.
def to_words(num)
numbers_to_name = {
10000000 => "crore",
100000 => "lakh",
1000 => "thousand",
100 => "hundred",
90 => "ninety",
80 => "eighty",
70 => "seventy",
60 => "sixty",
50 => "fifty",
40 => "forty",
30 => "thirty",
20 => "twenty",
19=>"nineteen",
18=>"eighteen",
17=>"seventeen",
16=>"sixteen",
15=>"fifteen",
14=>"fourteen",
13=>"thirteen",
12=>"twelve",
11 => "eleven",
10 => "ten",
9 => "nine",
8 => "eight",
7 => "seven",
6 => "six",
5 => "five",
4 => "four",
3 => "three",
2 => "two",
1 => "one"
}
log_floors_to_ten_powers = {
0 => 1,
1 => 10,
2 => 100,
3 => 1000,
4 => 1000,
5 => 100000,
6 => 100000,
7 => 10000000
}
num = num.to_i
return '' if num <= 0 or num >= 100000000
log_floor = Math.log(num, 10).floor
ten_power = log_floors_to_ten_powers[log_floor]
if num <= 20
numbers_to_name[num]
elsif log_floor == 1
rem = num % 10
[ numbers_to_name[num - rem], to_words(rem) ].join(' ')
else
[ to_words(num / ten_power), numbers_to_name[ten_power], to_words(num % ten_power) ].join(' ')
end
end
Вы также можете проверить gem 'rupees' - https://github.com/railsfactory-shiv/rupees, чтобы конвертировать числа в индийские рупии (например, в Лах, Кроу и т.д. )