如何解决如何检查字符串在ruby中是否包含特殊字符
| 如何检查字符串是否包含红宝石中的特殊字符。如果我得到正则表达式也很好。 请告诉我解决方法
special = \"?<>\',?[]}{=-)(*&^%$#`~{}\"
regex = /[#{special.gsub(/./){|char| \"\\\\#{char}\"}}]/
然后,您可以使用正则表达式测试字符串是否包含特殊字符:
if some_string =~ regex
这看起来有点复杂:这是怎么回事
special.gsub(/./){|char| \"\\\\#{char}\"
是要把这个
\"?<>\',?[]}{=-)(*&^%$#`~{}\"
到这个:
\"\\\\?\\\\<\\\\>\\\\\'\\\\,\\\\?\\\\[\\\\]\\\\}\\\\{\\\\=\\\\-\\\\)\\\\(\\\\*\\\\&\\\\^\\\\%\\\\$\\\\#\\\\`\\\\~\\\\{\\\\}\"
每个特殊字符都以with5ѭ转义(本身在字符串中转义,即\\\\
而不是\\
)。然后将其用于构建这样的正则表达式:
/[<every character in special,escaped>]/
, 使用str.include?
。
如果str
包含给定的字符串或字符,则返回true
。
\"hello\".include? \"lo\" #=> true
\"hello\".include? \"ol\" #=> false
\"hello\".include? ?h #=> true
, \"foobar\".include?(\'a\')
# => true
, 为什么不使用[:alnum:]
posix的反函数。
这里的“ 14”包括所有“ 16”,“ 17”,“ 18”。
在这里阅读更多。
, 在Ruby 2.0.0及更高版本中该命令如何?
def check_for_a_special_charachter(string)
/\\W/ === string
end
因此,具有:
!\"He@llo\"[/\\W/].nil? => True
!\"Hello\"[/\\W/].nil? => False
, \"Hel@lo\".index( /[^[:alnum:]]/ )
如果您没有任何特殊性格,这将返回nil
,因此我认为是最简便的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。