我如何删除特殊字符?
我正在练习Ruby和正则expression式删除某些不需要的字符。 例如:
input = input.gsub(/<\/?[^>]*>/, '')
和特殊字符,例如☻或™:
input = input.gsub('&#', '')
这只留下数字,好的。 但是这只有在用户input一个特殊字符作为代码时才有效,如下所示:
我的问题:如果用户input没有代码的特殊字符,如何删除特殊字符,如下所示:
™ ☻
首先,我认为定义什么构成“正确的input”并删除其他所有内容可能会更容易。 例如:
input = input.gsub(/[^0-9A-Za-z]/, '')
如果这不是你想要的(你想支持非拉丁字母等),那么我认为你应该列出你想要删除的字形(如™或☻),并逐个删除它们,因为很难区分中文,阿拉伯文等字符和象形文字编程。
最后,您可能希望通过转换为HTML转义序列或从HTML转义序列转换来标准化您的input。
如果你只是想要ASCII字符,那么你可以使用:
original = "aøbauhrhræoeuacå" cleaned = "" original.each_byte { |x| cleaned << x unless x > 127 } cleaned # => "abauhrhroeuac"
你可以匹配你想要的所有angular色,然后将它们连接在一起,就像这样:
original = "aøbæcå" stripped = original.scan(/[a-zA-Z]/).to_s puts stripped
输出"abc"
您可以使用参数化 :
'@!#$%^&*()111'.parameterize => "111"
Can BerkGüder回答的一个简单的方法是:
为了删除特殊字符:
input = input.gsub(/\W/, '')
为了保持字的字符:
input = input.scan(/\w/)
最后input是一样的! 尝试一下: http : //rubular.com/