我如何删除特殊字符?

我正在练习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/