Reputation: 1160
How to check whether a string contains special character in ruby. If I get regular expression also it is fine.
Please let me know
Upvotes: 19
Views: 36985
Reputation: 32933
special = "?<>',?[]}{=-)(*&^%$#`~{}"
regex = /[#{special.gsub(/./){|char| "\\#{char}"}}]/
You can then use the regex to test if a string contains the special character:
if some_string =~ regex
This looks a bit complicated: what's going on in this bit
special.gsub(/./){|char| "\\#{char}"}
is to turn this
"?<>',?[]}{=-)(*&^%$#`~{}"
into this:
"\\?\\<\\>\\'\\,\\?\\[\\]\\}\\{\\=\\-\\)\\(\\*\\&\\^\\%\\$\\#\\`\\~\\{\\}"
Which is every character in special, escaped with a \
(which itself is escaped in the string, ie \\
not \
). This is then used to build a regex like this:
/[<every character in special, escaped>]/
Upvotes: 17
Reputation: 11
if you looking for a particular character, you can make a range of characters that you want to include and check if what you consider to be a special character is not part of that arsenal
puts String([*"a".."z"].join).include? "a" #true
puts String([*"a".."z"].join).include? "$" #false
I think this is flexible because here you are not limited as to what should be excluded
puts String([*"a".."z",*0..9,' '].join).include? " " #true
Upvotes: -1
Reputation: 424
How about this command in Ruby 2.0.0 and above?
def check_for_a_special_charachter(string)
/\W/ === string
end
Therefore, with:
!"He@llo"[/\W/].nil? => True
!"Hello"[/\W/].nil? => False
Upvotes: 2
Reputation: 3852
Use str.include?
.
Returns true
if str
contains the given string or character.
"hello".include? "lo" #=> true
"hello".include? "ol" #=> false
"hello".include? ?h #=> true
Upvotes: 30
Reputation: 655
"Hel@lo".index( /[^[:alnum:]]/ )
This will return nil
in case you do not have any special character and hence eaiest way I think.
Upvotes: 3