Finding and writing to specified area in a text file

R

Ryan Mckenzie

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
 
R

Ryan Mckenzie

Aldric said:
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?
 
M

Michael Tomer

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.
 
G

George Opritescu

Aldric said:
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 .
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,575
Members
45,053
Latest member
billing-software

Latest Threads

Top