Hi all, I'm not sure why but I assumed gsub! would allow me to replace
\n with line feeds or \r for carriage returns.
How do I gsub! and replace everything with a nonvisible character like
newline? I was using this results.gsub!("\n","\n") but obviously that
does not work also tried results.gsub!("\n",10.chr). No go.
Kinda of frustrating for something so simple. I guess I could always do
some recursion. Thanks.
If so, you need to change "\n" (1 character string) into "\\\\n" (3 character string, two escaped backslashs and the letter 'n'). The replacement string will undergo two different interpretations: as a string literal "\\\\n" becomes \\n which when interpreted as a replacement for a regexp undergoes another round (so that things like \1 and \2 can reference groups in the regexp) and becomes \n
Yes, this is tricky, but it's because there are two levels of escaping going on and both use the backslash.
Hi all, I'm not sure why but I assumed gsub! would allow me to replace
\n with line feeds or \r for carriage returns.
How do I gsub! and replace everything with a nonvisible character like
newline? I was using this results.gsub!("\n","\n") but obviously that
does not work also tried results.gsub!("\n",10.chr). No go.
Kinda of frustrating for something so simple. I guess I could always do
some recursion. Thanks.
--
Simon Tan wrote:
If you want to substitute
Hello\nWorld by
Hello
World
you should try to work with single quotes:
a = 'Hello\nWorld'
Simon Tan wrote:
=> "Hello\\nWorld"
irb(main):002:0> puts a
Hello\nWorld
=> nil
irb(main):003:0> a.gsub!('\n',"\n")
=> "Hello\nWorld"
irb(main):004:0> puts a
Hello
World
ยทยทยท
Hi all, I'm not sure why but I assumed gsub! would allow me to replace
\n with line feeds or \r for carriage returns.
How do I gsub! and replace everything with a nonvisible character like
newline? I was using this results.gsub!("\n","\n") but obviously that
does not work also tried results.gsub!("\n",10.chr). No go.
Kinda of frustrating for something so simple. I guess I could always do
some recursion. Thanks.
haha actually, the other way around I have a string(I believe...I'm
using Hpricot to retreive web pages and it likes to add slashes to
everything). For example, I want to change "Hello, \nWorld" by changing
\n into a newline. So the output should be like:
Hello
World
I did try your suggestion, but I get "Hello\\nWorld". Will keep playing
with the slashes.
Rob Biedenharn wrote:
ยทยทยท
On Jan 19, 2009, at 7:19 PM, Simon Tan wrote:
--
Are you trying to turn this:
Hello,
World
Into something like:
Hello,\nWorld
If so, you need to change "\n" (1 character string) into "\\\\n" (3
character string, two escaped backslashs and the letter 'n'). The
replacement string will undergo two different interpretations: as a
string literal "\\\\n" becomes \\n which when interpreted as a
replacement for a regexp undergoes another round (so that things like
\1 and \2 can reference groups in the regexp) and becomes \n
Yes, this is tricky, but it's because there are two levels of escaping
going on and both use the backslash.
The rules for what needs to be escaped depend on the kind of quotes used.
Are you seeing output that is shown in double quotes to indicate that it is a string?
-Rob
ยทยทยท
On Jan 19, 2009, at 8:16 PM, Simon Tan wrote:
haha actually, the other way around I have a string(I believe...I'm
using Hpricot to retreive web pages and it likes to add slashes to
everything). For example, I want to change "Hello, \nWorld" by changing
\n into a newline. So the output should be like:
Hello
World
I did try your suggestion, but I get "Hello\\nWorld". Will keep playing
with the slashes.
Rob Biedenharn wrote:
On Jan 19, 2009, at 7:19 PM, Simon Tan wrote:
--
Are you trying to turn this:
Hello,
World
Into something like:
Hello,\nWorld
If so, you need to change "\n" (1 character string) into "\\\\n" (3
character string, two escaped backslashs and the letter 'n'). The
replacement string will undergo two different interpretations: as a
string literal "\\\\n" becomes \\n which when interpreted as a
replacement for a regexp undergoes another round (so that things like
\1 and \2 can reference groups in the regexp) and becomes \n
Yes, this is tricky, but it's because there are two levels of escaping
going on and both use the backslash.
I have a string(I believe...I'm
using Hpricot to retreive web pages and it likes to add slashes to
everything). For example, I want to change "Hello, \nWorld" by changing
\n into a newline.
Perhaps there's a misunderstanding here. I doubt Hpricot adds anything.
If you see this "Hello, \nWorld" in 'irb' then that's because 'irb'
shows you the string in the way you'd write it in your source-code. The
two characters "\n" are actually a newline.
Ok, I just realized I've been using p to print everything out! "Puts"
works a whole lot better. Doh! Thanks for all the help. Sorry for
phrasing the question poorly
On Jan 24, 2009, at 7:25 PM, Simon Tan <simon1tan@yahoo.com> wrote:
Ok, I just realized I've been using p to print everything out! "Puts"
works a whole lot better. Doh! Thanks for all the help. Sorry for
phrasing the question poorly