2016-11-27 124 views
3

這可能是一個愚蠢的問題,但我從昨天開始就無法做到。 我得到了一個包含一些數據,我需要使用的輸入文件,它應該是這樣的:將輸入存儲到變量Ruby

x <= 42 & x >= 20 | x < 50 
y > 10 & y < 20 
z < 100 & z > 101 
y > 5 
w <= 0 
a >= 0 | a <= 10 

我需要能夠將其分成說明,以下格式:<variable> <operator> <number>,每的說明是分開的,正如你所看到的,'&','|'或者一個新行(在我的情況下意味着與'|'相同)。

請注意,x變量出現在2個不同的行中,但它指的是相同的x,一個不應覆蓋另一個。

我瘋狂的猜測是遍歷文本並將其拆分爲4個字符串塊,那就是了。這個問題是我不知道如何處理Ruby中的新行。

我想:

lines = [] 


begin 
    file = File.open(ARGV.at(0)) 

    while (t = file.gets.chomp) 
    lines << line.split 
    end 


    file.close 
rescue => e 
    puts e 
end 

這將每個分割返回,行陣列,成的話,但我仍然需要獲得新行。

TL; DR:鑑於先前的輸入,我需要能夠做一些事情,如:

x = (LeftInfinite.new(42,']').intersection(RightInfinite.new('[',20).union(LeftInfinite.new(50,')') 

對於一線例如

+0

這是預期的輸出,還是這是一個輸入? – mutantkeyboard

+0

這就是我正在閱讀的文件的外觀。 – Stieg

+0

你可以分享期望的輸出應該是什麼樣子?請.. – zee

回答

0

您可以閱讀行文件的內容

File.readlines(ARGV.at(0)).each do |line|

或得到的所有內容,並把它分解

因爲文件的內容加載到內存0

lines = File.read(ARGV.at(0)).split("\n")

以上是很好的小文件。 對於大文件需要使用這種方法

File.foreach(ARGV.at(0)).with_index do |line, line_num| 

end 
+0

感謝您的回答,但我已經從文件中讀取,我的問題是將這些行的內容存儲到我可以使用的變量中。 – Stieg