[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

search and replace text in files

phil swenson

5/3/2007 5:19:00 PM

I need to search a file for text "InstallDir=" + newline character and
replace it with something like: InstallDir=C\:\\mws71 + newline

My own experimentation with this had problems with writing the back-
slashes to the file (it's a requirement of the format to have the back-
slashes as in my example). The string had the back-slashes in it but
they didn't get persisted to the file correctly.

Are there any libraries that perform a search and replace?

thanks
phil

3 Answers

Suraj Kurapati

5/3/2007 6:17:00 PM

0

Phil Swenson wrote:
> I need to search a file for text "InstallDir=" + newline character and
> replace it with something like: InstallDir=C\:\\mws71 + newline

>> "InstallDir=\n".gsub /(InstallDir=)(\n)/, '\1C\:\mws71\2'
=> "InstallDir=C\\:\\mws71\n"

> My own experimentation with this had problems with writing the back-
> slashes to the file (it's a requirement of the format to have the back-
> slashes as in my example). The string had the back-slashes in it but
> they didn't get persisted to the file correctly.

In a single-quoted string, one backslash outputs one backslash.
In a double-quoted string, two backslashes outputs one backslash.

>> '\ '
=> "\\ "

>> "\\ "
=> "\\ "

> Are there any libraries that perform a search and replace?

String#gsub

--
Posted via http://www.ruby-....

Brian Candler

5/3/2007 7:03:00 PM

0

On Fri, May 04, 2007 at 03:16:37AM +0900, Suraj Kurapati wrote:
> Phil Swenson wrote:
> > I need to search a file for text "InstallDir=" + newline character and
> > replace it with something like: InstallDir=C\:\\mws71 + newline
>
> >> "InstallDir=\n".gsub /(InstallDir=)(\n)/, '\1C\:\mws71\2'
> => "InstallDir=C\\:\\mws71\n"
>
> > My own experimentation with this had problems with writing the back-
> > slashes to the file (it's a requirement of the format to have the back-
> > slashes as in my example). The string had the back-slashes in it but
> > they didn't get persisted to the file correctly.
>
> In a single-quoted string, one backslash outputs one backslash.

Except where followed by a single quote or another backslash.

irb(main):001:0> '\\'.length
=> 1
irb(main):002:0> '\''.length
=> 1
irb(main):003:0> '\n'.length
=> 2

phil swenson

5/3/2007 7:35:00 PM

0

> > Are there any libraries that perform a search and replace?
>
> String#gsub
>


I meant on a file... I was looking for something like
File.search_and_replace(file_name, regex_search, replace_string)

But I guess I can simply pull a file into a string and then do a gsub
and write the file out.

Thanks,
phil