大家下午好!搜索和通過紅寶石替換文件的多個單詞
我非常新的Ruby和想編寫一個基本的搜索和Ruby的替換功能。 當你調用該函數,你可以傳遞參數(搜索模式,替換單詞)。
這是這樣的:multiedit(模式1,replacement1,模式2,replacement2,...)
現在,我想我的函數讀取一個文本文件中,搜索模式1和與replacement2取代它,搜索pattern2並將其替換爲replacement2等等。最後,修改後的文本應該寫入另一個文本文件。
我試圖用這樣做,直到循環,但我得到的是,雖然所有的下列模式被忽視只有第一個模式被替換(在這個例子中,只有蘋果被替換爲水果)。我認爲問題在於我總是重讀原始未改變的文本?但我找不出解決方案。你可以幫我嗎?以我所做的方式調用函數對我來說很重要。
def multiedit(*_patterns)
return puts "Number of search patterns does not match number of replacement strings!" if (_patterns.length % 2 > 0)
f = File.open("1.txt", "r")
g = File.open("2.txt", "w")
i = 0
until i >= _patterns.length do
f.each_line {|line|
output = line.sub(_patterns[i], _patterns[i+1])
g.puts output
}
i+=2
end
f.close
g.close
end
multiedit("apple", "fruit", "tomato", "veggie", "steak", "meat")
你能幫我嗎?
非常感謝您提前!
問候
這就是我一直在尋找的。必須添加require'enumerator',因爲我正在運行一個較老的ruby版本,但現在它完全按照它應該做的。 非常感謝您的快速反應! – 2012-04-02 07:51:30