Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

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

#ruby


Обращался к англоязычному гуглу, набирая ruby triad но он мне выдает картинки с какой-то
стриптизершей.

Есть число (Integer), например 146234232.

Как из него получить строку "146 234 232"?
    


Ответы

Ответ 1



def comma_numbers(number, delimiter = ',') number.to_s.reverse.gsub(%r{([0-9]{3}(?=([0-9])))}, "\\1#{delimiter}").reverse end number_to_currency(1234567890.506, locale: :fr)

Ответ 2



i=146234232 i.pr.to_s.pr.split(/(.{1,3})/).pr.arEnd.pr.join(' ').pr # Данный код выполняется на моем компьютере, # как вы можете видеть на видео. # У вас этот код возможно не будет выполняться. # Так как необходимы дополнительные библиотеки. https://www.youtube.com/watch?v=QAA-5QZVNEs

Ответ 3



Можно воспользоваться, например, регулярными выражениями: > 146234232.to_s.gsub(/([0-9]{3})/,'\1 ').strip => "146 234 232" Если строка не делится целиком на триады, то последняя группа будет неполной: > 1462342325.to_s.gsub(/([0-9]{3})/,'\1 ').strip => "146 234 232 5"

Ответ 4



[ 1, 12, 123, 1234, 12345, 123456 ].each do |m| puts "%8s\t%8s" % [m, -m].map{ |n| n.to_s.reverse.scan(/\d\d?\d?-?/).join(" ").reverse } end 1 -1 12 -12 123 -123 1 234 -1 234 12 345 -12 345 123 456 -123 456

Ответ 5



Я для разбиения цисла на триады обычно использую регулярное выражение /(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 '

Ответ 6



Так же можно воспользоваться Enumerable методами 12345.to_s.split("").reverse.each_slice(3).to_a.map{|e| e.reverse.join("")}.reverse.join(" ")

Ответ 7



def split(number, delimiter = ' ', group = 3) return '0' if number.zero? # вычисляем 10 в степени "group", по-умолчанию 1000 n = 10 ** group; parts = [] # пока число больше 0, сохраняем остаток деления на n и делим само число на n number = number.abs while number > 0 parts.unshift(number % n) number = (number / n).floor end parts.join(delimiter) end split(123456789) # "123 456 789" split(123456789, '-') # "123-456-789" split(123456789, '-', 2) # "1-23-45-67-89"

Комментариев нет:

Отправить комментарий