Rubyリファレンス: Home

== (String)

Edit   History

標準クラス・モジュール > String > ==

str == other_str

==演算子(メソッド)は、2つの文字列が同じかどうかを調べます。文字列の内容が同じならtrue、違いがあればfalseを返します。

右辺other_strが文字列でない場合はfalseを返します。"123" == 123falseです。

2つの文字列が別のStringオブジェクトであっても、持っている文字列が同じならtrueになります。「同じオブジェクトかどうか」を調べたいときは、Objectクラスのequal?メソッドを使います。

s = "hello"
t = "hello"
puts s == t
puts s.equal?(t)
true
false

!=演算子は、2つの文字列が違えばtrue、同じならfalseを返します。!=Stringクラスで定義されているメソッドではありませんが、Rubyでは==が定義されていれば自動的に!=が使えます。

s = "hello"
t = "world"
puts s == t
puts s != t
false
true

詳細

Ruby 1.9 Ruby 1.9では、文字列の文字コード(Encodingオブジェクト)が違えば、同じ文字を持っていてもfalseになります。ただし、文字がすべてアスキー文字の範囲ならtrueになります。

# encoding: utf-8
s = "太郎"
t = "太郎".encode("Shift_JIS")
puts s == t
 
s = "hello"
t = "hello".encode("Shift_JIS")
puts s == t
false
true

Ruby 1.9 組み込み変数$=の値がtrueであれば、==は大文字小文字を区別しないで比較します。ただし、$=はRuby 1.8で廃止予定になり、Ruby 1.9で廃止されました。大文字小文字を区別しないで比較するには、casecmpメソッドを使います。

関連項目