Hello,
I'm trying to find a specified keyword in a text file that I have open
then replace the line of that keyword with some new text. Is it
possible do do this?
So something like:
#custom.txt
hello world
INSERT
end of hello world
So INSERT would be swapped with some new text.
Thanks
···
--
Posted via http://www.ruby-forum.com/.
In all of my research online, the only way that I've found to do it is
to read the entire file, replace what you wanna replace, write to a new
file, then copy over the original one. I hope someone can show me a
better way.
--Aldric
Ryan Mckenzie wrote:
···
Hello,
I'm trying to find a specified keyword in a text file that I have open
then replace the line of that keyword with some new text. Is it
possible do do this?
So something like:
#custom.txt
hello world
INSERT
end of hello world
So INSERT would be swapped with some new text.
Thanks
Aldric Giacomoni wrote:
In all of my research online, the only way that I've found to do it is
to read the entire file, replace what you wanna replace, write to a new
file, then copy over the original one. I hope someone can show me a
better way.
--Aldric
Hi Aldric,
I'm actually looking to replace some text/code in 3-4 places so i can't
hardcode specific lines into the model because they could change. All
of this needs to be done on a button click so the actual file is hidden
from the user. I'm eventually wanting to add form input boxes and use
them to replace the text/code areas.
Thanks for your help. Please could you put up some of your code for me
to study?
···
--
Posted via http://www.ruby-forum.com/\.
Aldric Giacomoni wrote:
In all of my research online, the only way that I've found to do it is
to read the entire file, replace what you wanna replace, write to a new
file, then copy over the original one. I hope someone can show me a
better way.
--Aldric
You know , there is an alternative to writing to a new file . You will
have to read the file contents , modify them , seek to the file's start
, write the modified contents and truncate at the current position .
···
--
Posted via http://www.ruby-forum.com/\.
A gsub (global substitution) should take care of the problem. Here's an
example of how I might do this:
···
######################################################
data = ""
File.open("my_file.txt", "r") do |file|
data = file.read.gsub("INSERT", "new word")
end
File.open("my_file.txt", "w") do |file|
data = file.write(data)
end
######################################################
The gsub command also supports regular expressions, if you need it.
--
Posted via http://www.ruby-forum.com/.