Ruby строка манипулирование числами - PullRequest
0 голосов
/ 22 августа 2011

У меня есть пример этого числа: 5032

Я хочу получить это: 5.0.32

Как я могу сделать это с помощью манипуляции с рубиновыми строками?

Ответы [ 3 ]

3 голосов
/ 22 августа 2011

Мне было бы интересно услышать плюсы и минусы этих разных решений. Какой самый быстрый? Что самое ясное? Дорогие ли регулярные выражения?

Вот еще одно решение:

sprintf("%s.%s.%s%s", *5032.to_s.split(""))

Вот наши результаты. Шахта самая медленная:

require 'benchmark'

n = 500000
Benchmark.bm do |x|
  x.report { n.times {"5032".sub(/^(.)(.)/,"\\1.\\2.")}}
  x.report { n.times {"5032".insert(2, ".").insert(1, ".")}}
  x.report { n.times {sprintf("%s.%s.%s%s", *5032.to_s.split("")) }}
end



     user     system      total        real
  0.610000   0.000000   0.610000 (  0.607663)
  0.320000   0.000000   0.320000 (  0.325050)
  3.030000   0.000000   3.030000 (  3.029342)
2 голосов
/ 22 августа 2011
> 5032.to_s.sub(/^(.)(.)/,"\\1.\\2.")
=> "5.0.32"
2 голосов
/ 22 августа 2011

Ваш вопрос немного неопределенный, но вы можете сделать это:

number = "5032"
number = "5032".insert(2, ".").insert(1, ".")
puts number

См. Документ API для вставки здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...