如何清除Ruby中无效字符的字符串?

时间:2019-04-05 08:29:34

标签: ruby encoding escaping

我正在解析文件,并且得到以下字符串:

"���email@locale"

如何确保清除包含这些无效字符“?”的字符串?

1 个答案:

答案 0 :(得分:1)

有多种方法删除不需要的字符。

"���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?