From: Phil Tomson Date: 2007-12-31T15:36:53+09:00 Subject: Re: How can I get this backslash-eliminating behavior when reading a file? On 12/30/07, Phil Tomson wrote: > I'm trying to write a parser for a file format that allows backslashes > '\' at the end of lines. The format I'm trying to parse treats > backslashes at the end of lines just like the Ruby parser would treat > them if they occured in a ruby source file. > > The double quotes string constructor does what I want it to in this case: > > irb(main):006:0> str = "line1 \ > irb(main):007:0" still more line1 \ > irb(main):008:0" even more line1" > => "line1 still more line1 even more line1" <- this is exactly what I want > > > However, if I read a string in from a file, I don't get what I want: > $ cat testfile > line 1 \ > still on line 1\ > even more line 1 > > irb(main):001:0> str = File.read("testfile") > => "line 1 \\\nstill on line 1\\\neven more line 1\n" > > I'd prefer not to even know about the backslashes or '\n's, so I'd > rather have the behavior that the double quotes string constructor > gives me: > => "line1 still more line1 even more line1" > > Is there any way to get this behavior when reading a file into a string? > > Phil > ah, of course, I could just to this: str = File.read("testfile").gsub(/\\\n/,'') That does what I asked for... now I realize that I probably don't want to do this since the line numbering will be all off when reporting errors... Phil