RocheRdin
RocheRdin

Reputation: 11

How to remove unwanted character using hash in Ruby?

I have a set of data :

coords=ARRAY(0x940044c)
Label<=>Bikini beach
coords=ARRAY(0x95452ec)
City=Y
Label=Naifaru%*

How do I remove the unwanted character to make it like this?

coords=ARRAY(0x940044c)
Label=Bikini beach
coords=ARRAY(0x95452ec)
City=Y
Label=Naifaru

I tried this:

hashChar = {"!"=>nil, "#"=>nil, "$"=>nil, "%"=>nil, "*"=>nil, "<=>"=>nil, "<"=>nil, ">"=>nil}

readFile.each do |char|
  unwantedChar = char.chomp
  puts unwantedChar.gsub(/\W/, hashChar)
end

But the output I will get is this:

coordsARRAY0x940044c
LabelBikinibeach
coordsARRAY0x95452ec
CityY
LabelNaifaru

Please help.

Upvotes: 0

Views: 214

Answers (3)

user1934428
user1934428

Reputation: 22225

I assume from the code you posted, that readFile is a String holding the set of data you are referring to.

puts readFile.delete('!#$<>*')

should do the job.

Upvotes: 1

thiaguerd
thiaguerd

Reputation: 847

Using a hash map with gsub

regex = Regexp.union(hashChar.keys)
puts your_string.gsub(regex, hashChar)

Upvotes: 0

Aleksei Matiushkin
Aleksei Matiushkin

Reputation: 121000

If the input is not extremely long and you are fine to load it into memory, String#gsub would do. It’s always better to whitelist wanted characters, rather than blacklist unwanted ones.

readFile.gsub(/[^\w\s=\(\)]+/, '')

# coords=ARRAY(0x940044c)
# Label=Bikini beach
# coords=ARRAY(0x95452ec)
# City=Y
# Label=Naifaru

Upvotes: 2

Related Questions