#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