如何从Ruby中的“2x3x4”中提取数字

时间:2015-12-04 07:30:30

标签: ruby

我正在处理来自代码出现2nd programming puzzle

我给出了尺寸列表(长x宽x高)。可能超过1000:

29x13x26
11x11x14
27x2x5
6x10x13

我想将每行的数字传递给方法:

def calc(l, w, h)
  # performs some calculation
end

但我不知道如何提取数字。这就是我到目前为止所做的:

a_file = File.open("presents_size.txt", "r")
a_file.each_line("\n") do |line|
  puts line
end

2 个答案:

答案 0 :(得分:3)

line.split('x').map(&:to_i) # => [29, 13, 26]

你去,这些是你的数字(你可以繁殖或其他)。

答案 1 :(得分:1)

您可以使用scanf库:

require 'scanf'

'29x13x26'.scanf('%dx%dx%d') #=> [29, 13, 26]

%d匹配整数,x匹配文字“x”。

要扫描整个文件,可以在块模式下使用scanf

require 'scanf'

File.open('words.txt', 'rb') do |f|
  f.scanf('%dx%dx%d') do |l, w, h|
    # do something with l, w, h
    p l: l, w: w, h: h
  end
end

输出:

{:l=>29, :w=>13, :h=>26}
{:l=>11, :w=>11, :h=>14}
{:l=>27, :w=>2, :h=>5}
{:l=>6, :w=>10, :h=>13}