Удалить адрес электронной почты из строки в Ruby - PullRequest
4 голосов
/ 24 ноября 2011

У меня есть следующий код, который должен удалять конкретный адрес электронной почты из строки, если он существует.Проблема в том, что я получаю сообщение об ошибке «недопустимый диапазон» yd «в строковой транслитерации (ArgumentError)», которое, как я полагаю, связано с тем, что оно обрабатывает мой ввод как регулярное выражение.Мне нужно будет сделать это с помощью переменной в реальном коде, а не строкового литерала, но это упрощенная версия проблемы.

Так как мне правильно выполнить эту операцию?

myvar = "test1@my-domain.com test2@my-domain.com"
myvar = myvar.delete("test1@my-domain.com")

Ответы [ 3 ]

7 голосов
/ 24 ноября 2011

Попробуйте

myvar = "test1@my-domain.com test2@my-domain.com"
myvar = myvar.gsub("test1@my-domain.com", '').strip
2 голосов
/ 24 ноября 2011

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.

0 голосов
/ 24 ноября 2011

Вы можете сделать это так

myvar = "test1@my-domain.com test2@my-domain.com"
remove = "test1@my-domain.com"
myvar.gsub!(remove, "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...