Добрый день!
Я довольно новичок в Ruby и хочу написать базовую функцию поиска и замены в Ruby.
При вызове функции вы можете передавать параметры (шаблон поиска, слово замены).
Это работает следующим образом: multiedit (pattern1, замена1, pattern2, замена2, ...)
Теперь я хочу, чтобы моя функция читала текстовый файл, выполняла поиск для pattern1 и заменяла его замещением2, выполняла поиск для pattern2 и заменяла заменой2 и так далее. Наконец, измененный текст должен быть записан в другой текстовый файл.
Я пытался сделать это с помощью цикла до, но все, что я получаю, это то, что заменяется только самый первый шаблон, а все последующие шаблоны игнорируются (в этом примере только яблоко заменяется фруктом). Я думаю, проблема в том, что я всегда перечитываю оригинальный неизмененный текст? Но я не могу найти решение. Вы можете мне помочь? Для меня важно назвать функцию так, как я это делаю.
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")
Вы можете мне помочь?
Большое спасибо заранее!
Привет