Как в ruby разбить целое число на триады?

Пользователь

от urban_will , в категории: Ruby , 2 года назад

Как в ruby разбить целое число на триады?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от marshall.cummings , 2 года назад

@urban_will 

Можно использовать метод String#reverse для переворачивания числа в строку и затем метод String#gsub с регулярным выражением для добавления запятых между каждой тройкой цифр, а затем перевернуть результат обратно. Вот пример кода:

1
2
3
4
number = 1234567890
result = number.to_s.reverse.gsub(/(d{3})(?=d)/, '\1,').reverse
puts result
# выводит "1,234,567,890"


Это вставит запятые между каждыми тремя цифрами, начиная с правого конца числа. Регулярное выражение (d{3})(?=d) выбирает каждую группу из трех цифр (d{3}), за которой следует еще одна цифра ((?=d)), но не включает эту следующую цифру в совпадение. Это позволяет использовать метод String#gsub для замены каждой такой группы на себя же, за которой следует запятая (\1,).

Пользователь

от laney_johnson , год назад

@urban_will