how to substitute group of words in a line with another text

  • Thread starter Muralidharan Regupathy
  • Start date
M

Muralidharan Regupathy

I am trying to create a routine which will convert text to SMS lingo
format. For example a sentence might contain "This should be done as
soon as possible". I have created a HASH which stores "ASAP" => "as soon
as possible".
My routine should parse the message and subsitute with "ASAP" and return
a string "This should be done ASAP".

def SMSdeflater(message)

@smsdictionary.each_pair do
|key, value|
tmpvalue = value.chomp.downcase
msg=message.chomp.downcase
puts "looking for <#{tmpvalue}> in <#{msg}>"
newmsg=msg.gsub(tmpvalue,key)
puts newmsg
end

the above mentioned code is not working, any help is appreciated

thanks,
murali
 
R

Robert Klemme

I am trying to create a routine which will convert text to SMS lingo
format. For example a sentence might contain "This should be done as
soon as possible". I have created a HASH which stores "ASAP" => "as soon
as possible".
My routine should parse the message and subsitute with "ASAP" and return
a string "This should be done ASAP".

def SMSdeflater(message)

@smsdictionary.each_pair do
|key, value|
tmpvalue = value.chomp.downcase
msg=message.chomp.downcase
puts "looking for <#{tmpvalue}> in <#{msg}>"
newmsg=msg.gsub(tmpvalue,key)
puts newmsg
end

the above mentioned code is not working, any help is appreciated

If there are not many phrases you can use Regexp.union:

msg.gsub Regexp.union(@smsdictionary.keys) do |match|
@smsdictionary[match]
end

Kind regards

robert
 
M

Muralidharan Regupathy

Robert said:
|key, value|
tmpvalue = value.chomp.downcase
msg=message.chomp.downcase
puts "looking for <#{tmpvalue}> in <#{msg}>"
newmsg=msg.gsub(tmpvalue,key)
puts newmsg
end

the above mentioned code is not working, any help is appreciated

If there are not many phrases you can use Regexp.union:

msg.gsub Regexp.union(@smsdictionary.keys) do |match|
@smsdictionary[match]
end

Kind regards

robert

Thanks Robert
However i tried otherway and it seems to work fine. I know my solution
is not a clean one but it works for my learning.
def SMSdeflater(message)
msg=message.chomp.downcase
@smsdictionary.each_pair do
|key, value|
tmpvalue = value.chomp.downcase
msg=msg.sub(tmpvalue,key)
puts msg
end
end
 

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

No members online now.

Forum statistics

Threads
473,780
Messages
2,569,608
Members
45,250
Latest member
Charlesreero

Latest Threads

Top