最も簡単な方法は、Stringクラスに含まれるinclude?メソッドを使うことです。
以下のように書くことができます。
string = "hello, world"
puts string.include?("world") #=> true
この場合、指定した文字列が含まれている場合はtrueを返し、含まれていない場合はfalseを返します。
Stringクラスには、指定した文字列が現れる位置を返すindexメソッドがあります。
このメソッドを使うことで、文字列が含まれているかどうかだけでなく、何文字目に現れるかも知ることができます。
string = "hello, world"
puts string.index("world") #=> 7
この場合、指定した文字列が現れる位置(何文字目か)を返します。
ただし、指定した文字列が見つからなかった場合はnilを返します。
Rubyには、正規表現を使って文字列を検索するための=~演算子があります。
以下のように書くことができます。
string = "hello, world"
puts string =~ /world/ #=> 7
この場合、指定した正規表現にマッチする文字列が現れる位置(何文字目か)を返します。
ただし、見つからなかった場合はnilを返します。
正規表現を使った検索は、Stringクラスに含まれるmatchメソッドを使っても行うことができます。
以下のように書くことができます。
string = "hello, world"
puts string.match(/world/) #=> #<MatchData "world">
この場合、指定した正規表現にマッチする文字列を含むMatchDataオブジェクトを返します。
見つからなかった場合はnilを返します。
先程の方法3と方法4では、正規表現を使用して文字列を検索しました。
正規表現は、文字列検索に強力なツールです。
正規表現を使うことで、より柔軟かつ高度な文字列検索が可能になります。
正規表現を使うことで、文字列のパターンを指定して検索することができます。
以下にいくつかの例を挙げます。
string = "hello, world"
puts string =~ /^hello/ #=> 0
この場合、^は文字列の先頭を表します。
つまり、”hello”で始まる文字列が現れる位置(何文字目か)を返します。
string = "hello, world"
puts string =~ /world$/ #=> 7
この場合、$は文字列の末尾を表します。
つまり、”world”で終わる文字列が現れる位置(何文字目か)を返します。
string = "apple, banana, orange"
puts string =~ /(apple|banana|orange)/ #=> 0
この場合、|は複数のパターンを表します。
つまり、”apple”、”banana”、または”orange”のいずれかが含まれる文字列が現れる位置(何文字目か)を返します。
string = "Hello, world"
puts string =~ /world/i #=> 7
この場合、iは大文字と小文字を区別しない検索を行うオプションです。
つまり、”world”という文字列が、大文字と小文字を区別せずに含まれる場合でもマッチします。
この記事では、Rubyで文字列の中に指定した文字が含まれるかどうかを知る方法について、
複数の方法を比較しながら解説しました。
それぞれのメソッドや演算子にはそれぞれ特徴がありますので、用途に合わせて使い分けることが大切です。