gsub with match replacement

J

James R. Leu

I'm trying to convert

"12:34" => "12:34"

(I know there is a CGI module with unescapeHTML(), I'm working in a
ruby environment that does not allow for additions of modules)

I'm trying:

"12:34".gsub(/&#(\d+);/,'\1'.to_i.chr)

But I get "1234"

Can anyone explain what I'm doing wrong?

BTW I know I can do:

"12:34".gsub(/&#(\d+);/) do
Integer($1).chr
end

but for some reason in the ruby environment I'm working in
I get 'Undefined method Integer for main:Object'
 
C

Carlos

I'm trying to convert
"12:34" => "12:34"

(I know there is a CGI module with unescapeHTML(), I'm working in a
ruby environment that does not allow for additions of modules)

I'm trying:

"12:34".gsub(/&#(\d+);/,'\1'.to_i.chr)

But I get "1234"

Can anyone explain what I'm doing wrong?

When ruby is about to call method #gsub, it evaluates the arguments.
The second argument is '\1'.to_i.chr -> 0.chr -> "\000".
BTW I know I can do:

"12:34".gsub(/&#(\d+);/) do
Integer($1).chr
end

but for some reason in the ruby environment I'm working in
I get 'Undefined method Integer for main:Object'

It's very strange that you get that error (works here). Maybe you can try
with $1.to_i.chr, as before.
 

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

Forum statistics

Threads
474,142
Messages
2,570,819
Members
47,367
Latest member
mahdiharooniir

Latest Threads

Top