2009-05-28 51 views
0

我想给整数输入到Ruby这样的:如何将整行输入转换为Ruby中的整数?

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

这整个事情应该被视为一个号码,以便我可以排序所有这些,如果有任何重复的数字我想打印出来。整行应作为一个整数与其他行进行比较。我无法将输入转换为一个整数,对于其中的每一行,我都能得到12.我该如何实现?

+2

请用英文改写。 – 2009-05-28 17:26:22

+1

你是说你想把空格去掉,只留下数字,所以'12 343'变成'12343'? – ceejayoz 2009-05-28 17:28:06

回答

6

如果你想这一切为一个号码,只需使用:

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

如果你想int数组,使用

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

尽我所知,他希望每一行都是一个数字。 – Pesto 2009-05-28 17:55:05

1

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

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

以下片段将采用每个t他单独编号并打印出任何重复项目。要检查每行而不是单个数字,请取消注释额外的行。

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