如何检查字符串中包含ruby中的特殊字符

时间:2011-06-14 12:10:52

标签: ruby-on-rails

如何检查字符串是否包含ruby中的特殊字符。如果我得到正则表达式也没关系。

请告诉我

7 个答案:

答案 0 :(得分:23)

使用str.include?

如果true包含给定的字符串或字符,则返回str

"hello".include? "lo"   #=> true
"hello".include? "ol"   #=> false
"hello".include? ?h     #=> true

答案 1 :(得分:15)

special = "?<>',?[]}{=-)(*&^%$#`~{}"
regex = /[#{special.gsub(/./){|char| "\\#{char}"}}]/

然后,您可以使用正则表达式来测试字符串是否包含特殊字符:

if some_string =~ regex

这看起来有点复杂:这一点发生了什么

special.gsub(/./){|char| "\\#{char}"

是转

"?<>',?[]}{=-)(*&^%$#`~{}"

进入这个:

"\\?\\<\\>\\'\\,\\?\\[\\]\\}\\{\\=\\-\\)\\(\\*\\&\\^\\%\\$\\#\\`\\~\\{\\}"

这是特殊的每个字符,使用\进行转义(其本身在字符串中转义,即\\而不是\)。然后用它来构建这样的正则表达式:

/[<every character in special, escaped>]/

答案 2 :(得分:6)

"foobar".include?('a')
# => true

答案 3 :(得分:3)

为什么不使用[:alnum:] posix的倒数。

此处[:alnum:]包括所有0-9a-zA-Z

了解更多here

答案 4 :(得分:1)

Ruby 2.0.0及以上版本的这个命令怎么样?

def check_for_a_special_charachter(string)   
  /\W/ === string
end

因此,有:

!"He@llo"[/\W/].nil?  => True

!"Hello"[/\W/].nil?   => False

答案 5 :(得分:0)

"Hel@lo".index( /[^[:alnum:]]/ )

这将返回nil,以防你没有任何特殊性格,因此我认为最简单。

答案 6 :(得分:0)

如果您要寻找一个特殊角色,则可以制作一系列要包含的角色,并检查您认为特殊字符是否不属于该武器库

puts String([*"a".."z"].join).include? "a"    #true
puts String([*"a".."z"].join).include? "$"    #false

我认为这很灵活,因为在这里您不应该排除哪些内容

puts String([*"a".."z",*0..9,' '].join).include? " "   #true