Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Reprocess Escape Sequences

Reply
Thread Tools

Reprocess Escape Sequences

 
 
Nathaniel Madura
Guest
Posts: n/a
 
      04-22-2010
I am getting a string that has escape sequences in it, and I would like
to print it to the screen after reprocessing the escape sequences. Maybe
I have missed something obvious but I haven't seen anything in the docs
that suggest how to do this. To replicate the behaviour I create a
string in irb like so:

$ irb
>> str = 'some \n\r string \t with \r escape \n sequences'

=> "some \\n\\r string \\t with \\r escape \\n sequences"
>> eval "puts str"

some \n\r string \t with \r escape \n sequences
=> nil
>> puts "%s" % str

some \n\r string \t with \r escape \n sequences
=> nil

I recognize that I can simply do a gsub:

>> puts str.gsub(/\\n/, "\n")

some
\r string \t with \r escape
sequences
=> nil

but that would mean I would have to pattern match all sequences, and it
seems like there should be a better way

Any suggestions?
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Robert Klemme
Guest
Posts: n/a
 
      04-23-2010
2010/4/22 Nathaniel Madura <(E-Mail Removed)>:
> I am getting a string that has escape sequences in it, and I would like
> to print it to the screen after reprocessing the escape sequences. Maybe
> I have missed something obvious but I haven't seen anything in the docs
> that suggest how to do this. To replicate the behaviour I create a
> string in irb like so:
>
> $ irb
>>> str =3D 'some \n\r string \t with \r escape \n sequences'

> =3D> "some \\n\\r string \\t with \\r escape \\n sequences"
>>> eval "puts str"

> some \n\r string \t with \r escape \n sequences
> =3D> nil


If you use eval you rather need to do something like this

irb(main):004:0> str =3D 'some \n\r string \t with \r escape \n sequences'
=3D> "some \\n\\r string \\t with \\r escape \\n sequences"
irb(main):005:0> puts eval('"'+str+'"')
some
escape with
sequences
=3D> nil
irb(main):006:0>


>>> puts "%s" % str

> some \n\r string \t with \r escape \n sequences
> =3D> nil
>
> I recognize that I can simply do a gsub:
>
>>> puts str.gsub(/\\n/, "\n")

> some
> \r string \t with \r escape
> =A0sequences
> =3D> nil
>
> but that would mean I would have to pattern match all sequences, and it
> seems like there should be a better way


Actually doing a replacement would probably be my preferred way
because of the security implications of eval.

You can do it in one go

irb(main):008:0> PAT =3D {'n'=3D>"\n",'t'=3D>"\t",'r'=3D>"\r"}
=3D> {"n"=3D>"\n", "t"=3D>"\t", "r"=3D>"\r"}
irb(main):009:0> str.gsub(/\\(.)/){|m| PAT[$1]}
=3D> "some \n\r string \t with \r escape \n sequences"

Kind regards

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to read strings cantaining escape character from a file and useit as escape sequences? slomo Python 5 12-02-2007 11:39 AM
vhdl textio and escape sequences Olaf Petzold VHDL 1 11-28-2005 06:22 PM
Reprocess page after document.write Paul Thompson Javascript 3 02-01-2005 07:23 PM
processing escape sequences exactly like compiler does Harald Kirsch Java 0 11-19-2004 11:34 AM
Escape sequences and printing Kit C Programming 5 09-17-2003 02:10 AM



Advertisments