On 21.02.2012, at 11:23, sachin kewale wrote:

> hi all,
>    i have one problem while encoding the special characters like 
> '',./?:""!@#$%^&*():;\{}[] >,I get string of book name containing some 
> special characters,
>    now i have to replace those characters with encoded value so i write 
> following function below:-
> 
> def special_char(text)
>       #puts "bookname in special_char::::== #{text}"
>       searchwords = text
>       arrlength= searchwords.length
>       #puts "arrlength::::== #{arrlength}"
>       arrlength.times do|i|     
>         str=searchwords[i]
>         str=str.gsub('%','%25'),
>         str=str.gsub('|','%7C'),
>         
>         str=str.gsub('\'','%5C'),
>         str=str.gsub(' ','%20'),
>         str=str.gsub(',','%2C'),
>         str=str.gsub('?','%3F')
>                 
>         searchwords[i]=str      
>       end
>  
> but when i pass the parameter text it gives me error :"private method `gsub' 
> called for 84:Fixnum"
> 

Ugly coding, sorry...

Try this instead (works on ruby 1.9):

def encode(string)
  map = {"symbol" => "spec_char" …. } # full it
  start_index = 0
  while match = string.match(/[\W]/, start_index)
    new_char = map[match.to_s]
    string[match.begin(0)..match.end(0)-1] = new_char
    start_index = match.begin(0) + new_char.size # correct start_index
  end
  string
end

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to