Ruby on rails 如何删除特殊字符?
我正在用Ruby和regex练习删除某些不需要的字符。例如:Ruby on rails 如何删除特殊字符?,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我正在用Ruby和regex练习删除某些不需要的字符。例如: input = input.gsub(/<\/?[^>]*>/, '') input = input.gsub(/[^0-9A-Za-z]/, '') 这只留下数字,好吗。但这仅在用户输入特殊字符作为代码时有效,如: ™ ™ ☻ original = "aøbæcå" stripped = original.scan(/[a-zA-Z]/).to_s puts stripped 我的问题:
input = input.gsub(/<\/?[^>]*>/, '')
input = input.gsub(/[^0-9A-Za-z]/, '')
这只留下数字,好吗。但这仅在用户输入特殊字符作为代码时有效,如:
™
™ ☻
original = "aøbæcå"
stripped = original.scan(/[a-zA-Z]/).to_s
puts stripped
我的问题:
如果用户输入特殊字符而没有代码,我如何删除特殊字符,如下所示:
™
™ ☻
original = "aøbæcå"
stripped = original.scan(/[a-zA-Z]/).to_s
puts stripped
您可以匹配所需的所有字符,然后将它们连接在一起,如下所示:
™
™ ☻
original = "aøbæcå"
stripped = original.scan(/[a-zA-Z]/).to_s
puts stripped
它输出“abc”首先,我认为定义“正确输入”的组成部分并删除其他内容可能更容易。例如:
input = input.gsub(/<\/?[^>]*>/, '')
input = input.gsub(/[^0-9A-Za-z]/, '')
如果这不是您想要的(您想要支持非拉丁字母,等等),那么我认为您应该列出一个要删除的glyph列表(例如™ 或☻), 然后一个接一个地删除它们,因为很难通过编程区分中文、阿拉伯文等字符和象形文字
最后,您可能希望通过转换为HTML转义序列或从HTML转义序列转换为HTML转义序列来规范输入。如果您只需要ASCII字符,则可以使用:
original = "aøbauhrhræoeuacå"
cleaned = ""
original.each_byte { |x| cleaned << x unless x > 127 }
cleaned # => "abauhrhroeuac"
original=“aøbauhrhræoeuacå”
已清理=“”
原始。每个|u字节{| x | 127}
清洁#=>“ABAUHRROEUAC”
您可以使用:
根据Can Berk Güder的回答,一个更简单的方法是: 要删除特殊字符,请执行以下操作:
input = input.gsub(/\W/, '')
input = input.scan(/\w/)
要保留单词字符,请执行以下操作:
input = input.gsub(/\W/, '')
input = input.scan(/\w/)
最后输入是一样的!试试:谢谢,我认为创建一个允许的字符列表更容易。谢谢!!我使用了
input=input.gsub(/[^0-9A-Za-z]/,“”)
保持字符串的原样。在这些特殊字符的位置上,它确实给了我一些额外的空格。请编辑您的答案,添加一个解释,说明您的代码是如何工作的,以及它是如何解决OP问题的。许多SO海报都是新手,不会理解您发布的代码。参数化:它会留下破折号。我使用'something-h'ere'.下划线.parameterize来解释它。您可以传递一个自定义分隔符来参数化:string.parameterize(分隔符:'.')