Новичок: замена текста в моем случае - PullRequest
0 голосов
/ 01 ноября 2011

В моем приложении Ruby on Rails в моем помощнике есть метод, который открыл файл с помощью:

content = File.open(myfile.txt)

Содержимое файла выглядит следующим образом:

my.car , my.seat, my.age;
my.son , my.dog, my.chair;
...

Итак, я разделяю содержимое на "; ", как показано ниже:

content.split(';').each do |line|
      #Here, I want to replace the text from "my" to "her" on each line
end

Как заменить в каждой строке "my" на "her" в содержимом?

для обновления содержимого:

her.car , her.seat, her.age;
her.son , her.dog, her.chair;
...

-------------------------- обновление ----------------- ----------------

Я бы хотел обновить содержимое открытого файла , а не только заменить строку при чтении содержимого из кода ruby.

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011

Нет способа изменить содержимое файла на лету .Файлы могут быть только добавлены, они не могут быть расширены, поэтому вы не можете заменить my на her.

. Вы можете начать с этого основного кода:

buf = ""

File.open('myfile.txt') do |file|
    file.readlines.each do |line|
        buf << line.gsub('my', "her")
    end
end

File.open('myfile.txt', 'w') do |file|
    file << buf
end
2 голосов
/ 01 ноября 2011
line.gsub!(/my/, "her")

Хотя вы можете захотеть получить более конкретную информацию с помощью регулярного выражения, например,

line.gsub!(/\bmy\./, "her")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...