У меня есть строка, заполненная командой * nix "hostname", которую мне нужно проанализировать для числа. Это легкая часть. Трудность возникает из-за необходимости делать математику (tm) на этом захваченном числе. По-видимому, захваты регулярных выражений всегда имеют тип MatchData, который не имеет математических функций, таких как «add» или «modulo», и не имеет метода для «.to_i». В настоящее время, чтобы сделать Math (tm) для моего захваченного числа, мне нужно использовать метод MatchData .to_s, чтобы преобразовать перехват в строку, а затем использовать .to_i String, чтобы сделать его целым числом. У меня вопрос, как лучше это сделать?
hostname = "webserver1337.mycorp.com"
number = hostname.match(/[a-z]+/)
puts "#{number}, with class #{number.class}" # prints '1337, with class MatchData'
somevar = number + 1 # this will fail horribly
temp1 = number.to_s
number = temp1.to_i
someothervar = number + 1
puts "#{number}, #{someothervar} with class #{number.class}" # prints '1337, 1338 with class FixNum'
Это ... немного безобразно. Есть ли лучший / более чистый способ достижения того же самого?