Как очистить строку от недопустимых символов в ruby? - PullRequest
0 голосов
/ 05 апреля 2019

Я анализирую файл и получаю эту строку:

"���email@locale"

Как я могу убедиться, что очистил строку, содержащую эти недопустимые символы "�"?

1 Ответ

1 голос
/ 05 апреля 2019

Существует несколько способов удаления нежелательных символов.

"���email@locale".chars.select(&:ascii_only?).join
=> "email@locale"
"���email@locale".gsub(/[^\p{Ascii}]/, '')
=> "email@locale"

Это будет разрываться с доменными именами, которые содержат международные символы, что нормально в наши дни.

Чтобы разрешить ascii до @ и все, что после этого, вы можете использовать что-то вроде этого:

sanitized_email = "���email@locale"[/\p{Ascii}+?@[^\s]+/]
# now you can check if the email was valid at all:
raise "invalid email" if sanitized_email.nil?
...