2011-06-14 33 views
13

如何检查字符串中是否包含红宝石中的特殊字符。如果我得到正则表达式也很好。如何检查字符串包含红宝石中的特殊字符

请让我知道

+0

你认为哪些字符 '特殊'? – Ant 2011-06-14 12:15:04

+1

此外,如果您发现它们有用(请参阅此处的打勾)并使用upvotes,则应接受问题的答案。它会帮助你得到更多的答案 – Rishabh 2011-06-14 12:15:35

+1

这些都是特殊的字符?<>',?[]} {= - )(*&^%$#'〜{} – 2011-06-14 12:20:43

回答

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

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

if some_string =~ regex 

这看起来有点复杂:这是怎么回事在此位

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

就是把这个变成

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

到这一点:

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

这是每一个人物在特殊的,躲过了\(其本身在字符串中逃了出来,即\\\)。这则用来构建一个正则表达式是这样的:

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

使用str.include?

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

"hello".include? "lo" #=> true 
"hello".include? "ol" #=> false 
"hello".include? ?h  #=> true 
5
"foobar".include?('a') 
# => true 
3

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

这里[:alnum:]包括全部0-9a-z,A-Z

了解更多here

+0

“Hel @ lo”.index(/ [^ [:alnum:]] /) 如果您的字符串中没有任何特殊字符并且将返回您的索引否则第一个特殊字符 – Akshat 2013-11-05 13:02:14

0
"[email protected]".index(/[^[:alnum:]]/) 

这将返回nil如果您没有任何特殊的字符,因此我觉得最eaiest的方式。

1

在Ruby 2.0.0及以上版本中该命令如何?

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

因此,有:

!"[email protected]"[/\W/].nil? => True 

!"Hello"[/\W/].nil? => False 
相关问题