如何在Ruby中将整行输入转换为整数?

时间:2009-05-28 17:25:31

标签: ruby

我想像这样给Ruby整数输入:

12 343 12312 12312 123123 231
12 343 12312 12312 123123 243
12 343 12312 12312 123123 2123

这整个事情应该被视为一个数字,以便我可以对它们进行排序,如果有任何重复的数字,我想打印它们。应将整行视为整数,以便与其他行进行比较。我无法将输入转换为一个整数,对于它给我的每一行都是12.我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:6)

如果您想将它全部作为一个数字,请使用:

input.gsub(/\s/,'').to_i

如果您想要一组整数,请使用

input.split.map{|i| i.to_i}

答案 1 :(得分:1)

这将继续接受输入行,删除所有空格,将其转换为数字,然后将它们添加到数组中:

numbers = []
STDIN.each_line do |line|
  numbers << line.gsub(/\s+/, '').to_i
end

答案 2 :(得分:0)

以下代码段将分别获取每个数字并打印出任何重复数据。要检查每一行而不是单个数字,请取消注释额外的行。

str = <<STRING
12 343 12312 12312 123123 231
12 343 12312 12312 123123 243
12 343 12312 12312 123123 2123
STRING

nums = str.split(/\s/m).collect {|i| i.to_i}
#nums = str.gsub(/ /,'').collect {|i| i.to_i}

uniq_nums = nums.uniq.sort

uniq_nums.each do |uniq|
  puts uniq if nums.find_all {|num| uniq == num}.length > 1
end

返回:

12
343
12312
123123