.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. Ruby
  5. Rubyの文字列比較とは?詳しい内容をご紹介!

Rubyの文字列比較とは?詳しい内容をご紹介!

  • Ruby
  • プログラミング言語
公開日時:   更新日時:
Rubyの文字列比較とは?詳しい内容をご紹介!
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

    システム
    エンジニア
    Rubyの文字列比較で使用する演算子を使いこなせるようになりたいです。

    プロジェクト
    マネージャー
    見た目が似ている演算子があるので、しっかりと覚えていきましょう。

    Rubyの文字列比較


    今回は、Rubyでの文字列比較について説明します。Rubyの文字列比較には様々な演算子が用意されており、用途に応じて使い分ける必要があります。

    見た目が似ている演算子もあるので、初心者は混乱しやすいかもしれません。Rubyの文字列比較に興味のある方はぜひご覧ください。

    比較のための演算子

    Rubyの文字列比較には、「等号比較演算子」または「不等号比較演算子」を使用します。

    等号比較演算子は、文字列が等しいか否かを判断する演算子で、「==」・「===」・「eql?」・「equal?」の4つがあります。不等号比較演算子は、文字列の大小を判断する演算子で、「<」・「>」・「<=」・「>=」の4つがあります。

    文字列比較について、以下で詳しく説明していきます。

    等号比較演算子「==」

    Rubyの等号比較演算子「==」は、文字列の「値」が一致しているか否かを判断します。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    str1とstr2の値”hoge”が一致しているので、「==」演算子はtrueを返します。また、「==」の否定は「!=」です。変数と文字列を直接比較することもできます。

    このように、等号比較演算子「==」は、文字列の「値」が一致しているか否かを判断します。

    等号比較演算子「===」

    Rubyの等号比較演算子「===」については、以下の使い方があります。
    ・「==」と同じ
    ・case文で暗黙的に使用される比較演算子
    ・インスタンスの判断
    ・範囲オブジェクトの判断
    ・正規表現オブジェクトの判断

    以降の章で詳しく説明していきます。

    「==」と同じ

    演算子の左辺が文字列や数字の場合、先ほど説明した「==」と同じ判断をします。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    値が一致しているか否かを判断しているので、「==」と同じです。
    また、「===」の否定演算子はありません。if-elseもしくはunlessで否定側のロジックを作成してください。

    case文で暗黙的に使用される比較演算子

    「===」は、case文で暗黙的に使用される比較演算子です。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    ここでは、内部的にstr1 === “hoge”が実行されています。
    このように、「===」は、case文で暗黙的に使用される比較演算子です。

    インスタンスの判断

    「===」の左辺がクラスオブジェクトの場合、右辺がそのインスタンスであるか否かを判断します。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    str1はStringクラスのインスタンスなので、「===」はtrueを返します。
    また、str1はIntegerクラスのインスタンスではないので、falseを返します。

    このように、「===」の左辺がクラスオブジェクトの場合、右辺がそのインスタンスであるか否かを判断します。

    範囲オブジェクトの判断

    「===」の左辺が範囲オブジェクトの場合、右辺がその範囲に含まれているか否かを判断します。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように、「===」の左辺が範囲オブジェクトの場合、右辺がその範囲に含まれているか否かを判断します。

    正規表現オブジェクトの判断

    「===」の左辺が正規表現オブジェクトの場合、右辺がその正規表現に一致するか否かを判断します。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように、「===」の左辺が正規表現オブジェクトの場合、右辺がその正規表現に一致するか否かを判断します。

    等号比較演算子「eql?」

    Rubyの等号比較演算子「eql?」は、「==」と同じ判断をします。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように「eql?」は、「==」と同じ判断をします。

    同じなのになぜ「eql?」演算子が存在するのでしょうか?
    「eql?」の存在意義は、可読性の向上です。
    また、「==」で比較しようとして誤って「=」で代入してしまうことを防ぐために、「eql?」で比較しても良いでしょう。
    このあたりは開発チーム内でコーディング規約があれば従ってください。

    等号比較演算子「equal?」

    Rubyの等号比較演算子「equal?」は、オブジェクトが一致しているか否かを判断します。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように「equal?」は、文字列が一致しているかではなく、オブジェクトが一致しているか否かを判断します。

    不等号比較演算子

    Rubyの文字列比較に使用する不等号比較演算子は、以下の4つがあります。
    ・小なり演算子 < ・大なり演算子 >
    ・以下演算子 <= ・以上演算子 >=

    文字列の不等号比較演算子は、辞書で先に出てくるか否かを判断します。
    例えば、「”a”の方が”b”よりも先に出てくる」「”a”の方が”A”よりも先に出てくる」などです。
    先に出てくるほうが小さい値として判断されます。

    実際のソースコードを見てみましょう。

    実行結果は以下のようになります。

    このように、Rubyにおける文字列の不等号比較演算子は、辞書で先に出てくるか否かを判断します。

    システム
    エンジニア
    演算子の例を並べて説明してくださったので、わかってきました。

    プロジェクト
    マネージャー
    実際に書いてみて、用途に応じた使い分けができるようにしておきましょう。

    Rubyの文字列比較について理解しよう

    いかがでしたでしょうか。Rubyの文字列比較には、等号比較演算子や不等号比較演算子があり、用途に応じて使い分ける必要があります。

    文字列比較して値が一致しているか、オブジェクトが一致しているか、範囲に含まれているか、正規表現に一致するか、など様々な文字列比較ができます。

    「==」と「===」、「eql?」と「equal?」など、見た目が似ている演算子があるので注意が必要です。ぜひご自身でソースコードを書いて、文字列比較についての理解を深めてください。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Ruby新着案件New Job