У меня есть строка input = "2 + 3"
, которую я бы хотел конвертировать в "2.0 + 3.0"
. Я достиг этого с помощью следующих двух запутанных методов:Есть ли простой способ преобразования чисел в поплавки внутри строки?
floats = input.scan(/\d+/).map(&:to_f)
operator = input.scan(/[+,\-,*,\/]/)
operator.unshift(floats.first.to_s)
.push(floats.last.to_s).join(' ')
#=> "2.0 + 3.0"
или:
input.split(/\s+/)
.map{|i| ['+','-','*','/'].include?(i) ? i : i.to_f }
.join(' ')
#=> "2.0 + 3.0"
есть более простой и лучший способ сделать это?
JFYI, этот стиль разбиения меток на несколько строк (точка сначала) IRB-недружественная. Это означает, что если вы вставляете этот код в IRB, вы получите кучу ошибок.Не исключено, что вы захотите вставить такой фрагмент в IRB. Поэтому используйте другой стиль ([точка последнего] (http://pastie.org/10922739)). –
@ Сергио Туленцев благодарит вас за этот совет и за более раннее вмешательство. –