Как удалить ненужный символ с помощью хэша в Ruby?

#ruby

#ruby

Вопрос:

У меня есть набор данных :

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

Как мне удалить ненужный символ, чтобы сделать его таким?

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

Я попробовал это:

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

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

Но результат, который я получу, таков:

 coordsARRAY0x940044c
LabelBikinibeach
coordsARRAY0x95452ec
CityY
LabelNaifaru
  

Пожалуйста, помогите.

Ответ №1:

Если ввод не очень длинный, и вы можете загрузить его в память, String#gsub подойдет. Всегда лучше вносить в белый список желаемых символов, а не в черный список нежелательных.

 readFile.gsub(/[^ws=()] /, '')

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

Ответ №2:

Я предполагаю, что из опубликованного вами кода readFile это String содержит набор данных, на которые вы ссылаетесь.

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

должен выполнить задание.

Ответ №3:

Использование хэш-карты с помощью gsub

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

Комментарии:

1. @RocheRdin ruby-doc.org/core-2.7.1/Regexp.html#method-c-union