String # delete (str) не удаляет буквенную строку str
, но создает набор из отдельных символов str
и удаляет все вхождения этих символов.попробуйте это:
"sets".delete("test")
=> ""
"sets".delete("est")
=> ""
Дефис имеет особое значение, он определяет диапазон символов.String#delete("a-d")
удалит все вхождения символов a, b, c и d.Символы границы диапазона должны быть заданы в порядке возрастания: вы должны написать "a-d"
, но не "d-a"
.
В вашем исходном примере ruby пытается построить диапазон символов из подстроки y-d
и завершается неудачей.
Вместо этого используйте метод String # gsub.