How to check string contains special character in ruby

前端 未结 7 1700
我在风中等你
我在风中等你 2021-02-12 22:31

How to check whether a string contains special character in ruby. If I get regular expression also it is fine.

Please let me know

相关标签:
7条回答
  • 2021-02-12 23:10

    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
    
    0 讨论(0)
  • 2021-02-12 23:16

    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
    
    0 讨论(0)
  • 2021-02-12 23:18
    "Hel@lo".index( /[^[:alnum:]]/ )
    

    This will return nil in case you do not have any special character and hence eaiest way I think.

    0 讨论(0)
  • 2021-02-12 23:19
    "foobar".include?('a')
    # => true
    
    0 讨论(0)
  • 2021-02-12 23:19

    Why not use inverse of [:alnum:] posix.

    Here [:alnum:] includes all 0-9, a-z, A-Z.

    Read more here.

    0 讨论(0)
  • 2021-02-12 23:26
    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>]/
    
    0 讨论(0)
提交回复
热议问题