Мне было бы интересно услышать плюсы и минусы этих разных решений. Какой самый быстрый? Что самое ясное? Дорогие ли регулярные выражения?
Вот еще одно решение:
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)