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

如何在Ruby中将整行输入转换为整数?,ruby,Ruby,我想向Ruby提供整数输入,如下所示: 12 343 12312 12312 123123 231 12 343 12312 12312 123123 243 12 343 12312 12312 123123 2123 这整件事应该作为一个数字,这样我就可以对它们进行排序,如果有任何重复的数字,我想打印出来。整行应视为一个整数,以便与其他行进行比较。我无法将输入转换成一个整数,因为它给我的每一行都是12。我怎样才能做到这一点呢?如果您希望将所有内容都作为一个数字,只需使用: input.gs

我想向Ruby提供整数输入,如下所示:

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

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

如果您希望将所有内容都作为一个数字,只需使用:

input.gsub(/\s/,'').to_i
如果需要整数数组,请使用

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

这将继续接受输入行,删除所有空白,将其转换为数字,并将其添加到数组中:

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

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

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

你是说你想去掉空格,只留下数字,所以“12343”变成了“12343”?据我所知,他希望每一行都是一个数字。我的大脑不再试图在“dem”、“dat”和“no”之后解析。你不明白我的问题!!12 231 1231 1231 212是一个完整的整数输入,12 231 1231 1231 211是另一个输入,那么我必须像我在第一篇文章中提到的那样,注释的代码行将把每一行输入读取为一个数字。因此,只需取消对它的注释,即可获得所需的行为。
12
343
12312
123123