【Ruby入門】splitメソッドの使い方の応用例
  • facebookページ
  • twitterページ
  • 2019.09.20

    【Ruby入門】splitメソッドの使い方の応用例

    Rubyではsplitメソッドは、文字列を特定の文字列、または一定の規則で区切って配列にする処理です。似たような機能は多くのプログラム言語にもありますが、Rubyのsplitほどの機能はありません。しかし、splitメソッドのそういった機能を知らないのはもったいない。そこで、今回はsplitメソッドの基本といかにもRubyらしい応用例についてご紹介します。

    文字列を配列に変換する機能

    プログラムを作る際、文字列を加工したり、比較する処理をよく使います。中でも、文字列を一定の規則で区切って配列にする処理は、そういったよく使われる機能の一つです。

    なお、この機能はいろいろなプログラム言語がサポートしていますが、Rubyでは英語で分裂させる、または、分割する、という意味のあるsplitを使います。

    文字列を配列に変換する機能

    splitメソッドを簡単に説明すると、文字列を扱うRuby標準のStringクラスのメソッドの一つで、引数で指定した区切り文字で文字列を分割し、配列として返します。

    これだけ読めば、他のプログラム言語にある似た機能と同じものを思われる方もいるでしょう。しかし、splitメソッドの引数として指定できるのは文字列だけではありません。正規表現や範囲なども指定できるので、他のプログラム言語では複雑な処理でも、Rubyなら簡単に書けます。

    また、splitメソッドは配列を返しますが、Rubyには配列を加工するメソッドもたくさんあるので、splitメソッドに続けて配列を加工するメソッドを追加することも可能です。

    splitメソッドの文法

    splitメソッドの基本は、文字列の変数に対して使用し、引数として区切り文字を指定します。なお、split
    メソッドは、2つの引数を指定でき、1番目は区切り文字で、2番目は変換する配列の数です。そして、2番目の
    引数を省略した場合は、配列は制限なく分割されます。また、1番目の引数も省略した場合は、空白文字で分割
    されます。

    str.split(pattern = $;, [limit])
    strは、元の文字列
    patternは、区切り文字
    変換する配列の数を第2引数limitで指定してもよい。

    例えば、「,」を含む文字列を、「,」を区切り文字として配列に変換する場合は、次のように使います。

    また、生成する配列の数を制限したい場合は、次のように指定します。

    なお、splitメソッドの区切り文字に文字列も使えます。

    splitメソッドの使い方

    次から、splitメソッドのより詳しい使い方について、例を用いてご紹介します。

    split()だけでも使える

    splitメソッドで区切り文字を指定しなかった場合、対象の文字列の空白、改行、タブで分割されます。そのため例えば、空白文字で区切られた文字列は、split()に引数を指定しなくても、配列に分割できます。

    区切り文字に正規表現を使う

    Rubyのsplitメソッドでは、区切り文字に正規表現を使うこともできます。例えば、コンマ(,)で区切られた文字列はプログラムでもよく使われますが、コンマの前後に空白が混じっていると、正しく処理できないこともあります。そのような場合、正規表現で前後に空白を含むコンマ(,)も区切り文字として使用できます。

    1文字ずつ配列に分割

    splitメソッドの分割文字に空白文字(“”)を指定すると、対象の文字列を1文字づつの配列に分割できます。なお、日本語の全角文字を扱うためには、文字コードを設定しておく必要があるので注意してください。

    splitメソッドの応用的な使い方

    これまで解説したように、文字列を配列に変換するsplitメソッドですが、他のプログラム言語のように単体でも使えます。しかし、Rubyらしい書き方をすれば、他のメソッドと組み合わせて、複雑な処理を簡単に書くこともできます。次からは、そういったsplitメソッドを使った応用的な使い方をご紹介します。

    複数の区切り文字を使う方法

    複数の区切り文字を使って配列に分割したい場合、予めそれらの区切り文字を、別の文字に変換しておき、その別の文字を使ってsplitメソッドを配列に分割します。

    しかし、Rubyのsplitメソッドでは、区切り文字に正規表現が使えます。そして、正規表現を使えば、複数の区切り文字を使用して配列に分割することが可能です。例えば、コンマ(,)とセミコロン(;)の2つを使いたい場合、「/,|;/」といった正規表現を利用します。

    mapメソッドと組み合わせる

    splitメソッドが出力するのは配列ですが、Rubyには配列を操作するメソッドが幾つかあります。そして、そのような配列を操作するメソッドの代表がmapメソッドです。mapメソッドは、配列の全ての要素を加工する処理を一行で書けます。

    例えば、数字をコンマ区切りで記述した文字列から、要素が数字の配列に変換するには、次のように書きます。

    この例では、splitメソッドに、配列の要素を文字列から数字に変換するmapメソッドの「map(&:to_i)」を組み合わせています。

    まとめ

    これまで紹介してきたように、Rubyのsplitメソッドには、複数の区切り文字が使えたり、正規表現が使えたりと他のプログラム言語の同じ機能に比べて多機能な点が特徴です。さらに、splitメソッドが生成した配列を処理するメソッドを組み合わせれば、複雑な処理を一行で簡単に書ける点もメリットと言えます。

    なお、多くのWebプログラマーにRubyが支持されている理由の一つは、複雑な処理でも簡潔なプログラムで書ける点です。しかし、そのためにはオブジェクトを正しく理解していなければ、そういった書き方ができません。今回紹介したsplitメソッドも、オブジェクトを理解していると、いろいろな使い方ができます。ぜひ、オブジェクトへの理解を深めて、Rubyらしいsplitメソッドの使い方をマスターしてください。


    Ruby on Railsのフリーランスは高収入でおすすめ!

    Rubyができる方は多くはいないのが現状です。 プロジェクトは右肩上がりで増えているので、エンジニアが全く足りておりません。 Rubyの実務経験が1年以上ある方はフリーランスになることもできるので、ぜひご興味があればポテパンの無料カウンセリングをご利用下さいませ! Ruby案件に関する情報は下記にまとまっていますのでぜひご覧下さい。

    Ruby on Rails案件のイマがわかる!知って見つかる最適案件


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件