如何检查字符串是否包含ruby中的特殊字符。如果我得到正则表达式也没关系。
请告诉我
答案 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)
答案 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