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.