Substituting variables in a method

M

Michael W. Ryder

I am trying to figure out how to pass variables for the parameters to a
method. I want to do something like b = a.tr({c}, {d}) where 'c' is the
text to be matched and 'd' is the replacement text. Obviously the above
does not work, nor does b = a.tr(#{c}, ${d}). Is this even possible or
do I need to work out some regular expression to do the same thing.
What I am trying to do is have a method where I can say change all
periods to commas and commas to periods or change all *s to #s or ...
 
H

Harry Kakueki

I am trying to figure out how to pass variables for the parameters to a
method. I want to do something like b = a.tr({c}, {d}) where 'c' is the
text to be matched and 'd' is the replacement text. Obviously the above
does not work, nor does b = a.tr(#{c}, ${d}). Is this even possible or
do I need to work out some regular expression to do the same thing.
What I am trying to do is have a method where I can say change all
periods to commas and commas to periods or change all *s to #s or ...

I'm not sure if this is what you want, but..


str1 = "I am a string. "
str2 = "You are not. "
str3 = str1 + str2

str4 = str3.gsub("#{str1}","#{str2}")
p str1
p str2
p str3
p str4

Harry
 
M

Michael W. Ryder

Harry said:
I'm not sure if this is what you want, but..


str1 = "I am a string. "
str2 = "You are not. "
str3 = str1 + str2

str4 = str3.gsub("#{str1}","#{str2}")
p str1
p str2
p str3
p str4

Harry

That's what I was looking for. I would never have thought of enclosing
the variables in double quotes. It also works for the .tr method.
Is there some place that describes how to do these types of things or is
it just a matter of experimenting or asking others?
 
M

Michael W. Ryder

Rick said:
The string interpolation is completely unnecessary, this is the same as:
str4 = str3.gsub(str1, str2)
How does one know when to use string interpolation and when it isn't
needed? I know that if I want to put a variable in the middle of a
string I have to use interpolation so I thought I also needed something
like that in this case as I didn't want to convert c's to d's.
 
H

Harry Kakueki

How does one know when to use string interpolation and when it isn't
needed? I know that if I want to put a variable in the middle of a
string I have to use interpolation so I thought I also needed something
like that in this case as I didn't want to convert c's to d's.

OK, I gave a bad example.
Maybe this is a little better.

str1 = "str1 string. "
str2 = "more stuff"
str3 = str1.gsub(str1,str2)
str4 = str1.gsub("str1","str2")
str5 = str1.gsub("str1","Now #{str2}")

p str1
p str2
p str3
p str4
p str5

Harry
 
M

Michael W. Ryder

Harry said:
OK, I gave a bad example.
Maybe this is a little better.

str1 = "str1 string. "
str2 = "more stuff"
str3 = str1.gsub(str1,str2)
str4 = str1.gsub("str1","str2")
str5 = str1.gsub("str1","Now #{str2}")

p str1
p str2
p str3
p str4
p str5

Harry
It took me a couple of minutes to figure out what these were doing and
they do make some of it clearer. What you helped me to figure out was
how to do something like:

a = "This is a test!"
c = "!"
d = "."
b = a.gsub(c, d)
puts b

I didn't want to convert c's to d's in this example, but wanted to
convert the exclamation mark to a period and get 'This is a test.'. I
can also change c to "test" and d to "mess" to get 'This is a mess!'.
Thank you and Rick for the assistance.
 

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,262
Messages
2,571,049
Members
48,769
Latest member
Clifft

Latest Threads

Top