2009-05-28 50 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