2016-02-25 124 views
0

我有一個連續的數據流,由整數組成,我需要添加它們以將三個組添加到數據庫。 我一直在Google上搜索一兩天,但還沒有找到可行的解決方案。添加三個int tp數組

所以我問這個大腦來幫助我。

def index 
    i=0 
    speedData = [] 
    tempArray = [] 
    File.open("/var/www/html/speeds.txt", "r").each_line do |line| 
     speedData.push(line.split(/\s/)[1].to_f.round) 
     puts speedData.last 
      if i<3 
       tempArray.push(speedData.last) 
       i=+1 
      end 
      puts tempArray.inspect 
      #Speed.create(:ping => tempArray[0], :down => tempArray[1], :up => tempArray[2]) 
      i=0 
      tempArray.clear 
     end 

    end 
    puts i 
end 

這是我當前的解決方案...不工作,不介意你。 :) 那麼我該怎麼辦? groups_of看起來不錯,但...

回答

1

是的,in_groups_of似乎是你所需要的。 如果我正確理解speeds.txt的格式,那麼應該像這樣工作:

def index 
    File.open("/var/www/html/speeds.txt", "r").each_line do |line| 
    all_numbers = line.split(/\s+/) 
    all_numbers.in_groups_of(3).each do |(ping, down, up)| 
     Speed.create(:ping => ping, :down => down, :up => up) 
    end 
    end 
end 
+0

謝謝!這是一個正確的方向格式speeds.txt是這樣的:Ping:35.791 ms 下載:26.84 Mbit/s 上載:4.63 Mbit/s –

+0

@swe_mattias你可能想使用regexps然後:'line =「Ping :35.791 ms下載:26.84 Mbit/s上載:4.63 Mbit/s「;匹配=/Ping:(? \ d + \。\ d +)。+?下載:(? \ d + \。\ d +)。+?上傳者:(? \ d + \。\ d +)/ );把[match [:up],match [:down],match [:ping]]放在''上 – faron