Search

検索したいワードを入力してください

2019年03月07日

Rubyのsplitメソッドで文字列を分割する方法を解説

プログラミングでは、文字列を一定の条件で分割して、文字や文字列を取り出すという操作が不可欠ともいえます。Rubyではsplitが文字列分割の際に使いやすいメソッドです。本記事では、Rubyのsplitメソッドについて基本的な使い方から応用編までご紹介します。

splitとは

プログラミングをしていると、1つの文字列を一定の条件で分割して扱いたい場面がでてきます。Rubyのプログラミング中にそんな状況になったら、splitメソッドを使うのが便利です。

splitメソッドは第1引数に区切り文字を指定して、任意の分割が可能ですが、引数を指定しない場合は空白文字で区切られます。空白文字として扱われるのは、「半角スペース」「\n(改行コード)」「\t(タブ)」などがあります。

Rubyでのsplitについて基本から応用までを解説

ここでは、実際にRubyでsplitメソッドを使ったコード記述例を交えながら、使い方を解説します。自分がプログラミングを行う際のデータなども想定し、例示にあてはめながら参照すると、理解が深まります。

splitの基本的な書き方

Rubyのsplitメソッドは、「文字列.split」の形で使います。文字列を分割するため、戻り値は配列になります。

【基本構文】
文字列.split(pattern = $;, [limit])

Rubyのsplitの構文では、引数:patternに区切り文字とみなす文字を設定します。引数limitには整数を指定し、戻り値となる配列の要素数を指定できます。

splitメソッドの基本的な使い方

splitメソッドのもっとも基本的な使い方は、デフォルトの「空白文字」によって文字列を分割し、配列を作る方法です。もとデータとなる文字列も、splitで配列に変換することを前提に、区切りたい場所に空白文字を入れて作っておきます。

【基本的な使い方】
配列変数 = 文字列.split

splitメソッドの引数に何も指定せずに分割する

Rubyのsplidメソッドに、引数を指定せずに使用すると、空白文字を区切り文字として、文字列の分割が行われます。

以下のコード記述例のstr1にセットしている文字列は、「Sample」と「code」の間に半角スペースがあります。str2は、半角スペースではなくタブ文字が含まれています。

空白文字で区切られているstr1とstr2は、splitにより分割され、2つの要素を持つ配列に変換されています。

コード記述例と実行結果
【コード記述例】
str1 ="sample code"
str2 ="sample code"
str3 ="sample,code"
array1 = str1.split
array2 = str2.split
array3 = str3.split

p array1
p array2
p array3

【実行結果】
["sample", "code"]
["sample", "code"]
["sample,code"]

区切り文字を指定して分割する

Rubyのsplitメソッドに、どの文字を区切り文字として分割するか、区切り文字を引数として渡します。以下のコード記述例では、区切り文字として「空白文字(” ")」「カンマ(,)」「シャープ(#)」「文字なし("")」を渡しています。

実行結果を参照すると、それぞれ指定した文字で区切った結果が、配列として戻されていることがわかります。文字なしで指定した場合、1文字ずつ分割されていることがわかります。

コード記述例と実行結果
【コード記述例】
str1 ="sample code"
str2 ="sample,code"
str3 ="sample#code"
array1 = str1.split(" ")
array2 = str2.split(",")
array3 = str3.split("#")
array4 = str1.split("")

p array1
p array2
p array3
p array4
【実行結果】
["sample", "code"]
["sample", "code"]
["sample", "code"]
["s", "a", "m", "p", "l", "e", " ", "c", "o", "d", "e"]

1文字ずつ分割する

Rubyでsplitメソッドを使って文字列を1文字ずつに分割する方法は、使い方としては基本的なものとなります。splitに「区切り文字」として与える引数の文字をダブルコーテーション(")2つ、つまり、文字がない状態(ブランク)を引数とします。

【コード記述例】
str ="sample"
array = str.split("")
p array


【実行結果】
["s", "a", "m", "p", "l", "e"]

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

splitの基本的な使い方は、動作も理解しやすく、実際のプログラミングの中でも使い勝手が良いので多用されます。Rubyのsplidメソッドの応用的な使い方は、基本的な使い方に比べ、引数の指定が複雑になります。

理解してしまえば難しい指定ではありませんが、最初から応用編を覚える必要はありません。splidの基本的な使い方を習得できたら、応用的な使い方を身に付けて、プログラミング効率をあげましょう。

正規表現を使って分割する

Rubyのsplitでは、区切り文字で分割するほか、正規表現とマッチする部分で分割することもできます。

【基本構文】
文字列.split(正規表現)

正規表現とは、特殊文字を用いて文字列を表現するための手段です。プログラミングでは、文字列を検索するときに使われます。

Rubyでは正規表現を「スラッシュ(/)」で囲んで引数にします。以下の例では、「カンマ(,)」 か「コロン(.)」で区切るよう指定しています。

コード記述例と実行結果
【コード記述例】
str = "1,000.999"

array = str.split(/[.|,]/)

p array
【実行結果】
["1", "000", "999"]

分割回数を制限する

splitメソッドは分割数を指定することができます。例えば、「sample」という文字列を"sample".split("")で分割した場合、6文字に分割され、要素6の配列となります。

しかし、プログラムの中では4つの配列として使いたい、という場合には、分割数に4を指定します。

【基本構文】
文字列.split(区切り文字, 分割数)

分割数はsplitの2つめの引数で指定します。

コード記述例と実行結果
【コード記述例】
array = "sample".split("",4)
p array
【実行結果】
["s","a","m","ple"]

分割数が、実際に文字列が分割される数より少ない場合は、分割数を超えた文字列は配列の最後の要素にまとめられます

splitメソッドを使ったいろいろな分割を試してみる

splitを使った分割の指定方法について、「区切り文字の指定」「分割数の指定」の基本パターンをご紹介しましたが、さらに複雑な指定を試し、splitを幅広く活用できるようになりましょう。

これからご紹介するサンプルコードのように、splitに渡す引数の値を変え、実際にどのような分割結果になるのか、実行結果から確認してみましょう。

splitメソッドの区切り文字に複数の文字を指定したら?

splitの区切り文字となる引数には、1文字だけでなく複数の文字(文字列)を指定することもできます。

【サンプルコード】
str = "yamakawaumikawaminato"
array = str.split("kawa")
p array


【実行結果】
["yama", "umi", "minato"]

splitの引数で指定した「kawa」を区切り文字として、「kawa」以外の文字を分割して、配列を生成しています。

空白文字を含む文字を区切り文字として使う

分割したい文字列の、文字の前後に含む空白文字をあわせて区切り文字に指定できます。配列にしたときに不要な空白を取り除く効果もあります。

【サンプルコード】
s = "This, is , a ; Pen."
p s.split(/\s*,\s*/)
p s.split(/\s*(;|,)\s*/)


【実行結果】
["This", "is", "a ; Pen."]
["This", ",", "is", ",", "a", ";", "Pen."]

分割数に「0」を指定してみると?

splitは2つ目の引数として分割数を指定することができます。ここで、分割数に0を指定した場合は、2つ目の引数として何も指定しないのと同じ結果になります。デフォルトが適用されるということです。

splitメソッドに分割数を指定しない場合、区切り文字で分割できた分の配列要素ができますが、分割した内容が存在しない場合は、配列の要素になりません。以下のサンプルコードを確認してみましょう。

分割数を指定しない場合または0を指定した場合の動作確認
【サンプルコード】
s = "one,two,three,four,five,,,,,"
p s.split(",")
p s.split(",", 0)
p s.split(",", 7)
【実行結果】
["one", "two", "three", "four", "five"]
["one", "two", "three", "four", "five"]
["one", "two", "three", "four", "five", "", ",,,"]

分割数に負の値や分割結果より大きな値を指定したら?

splitの分割数として、負の値(-1など)や、分割した結果できる配列の要素数よりも大きな数を指定していみると、いずれも区切り文字で分割してできた要素の数分の配列が生成されます。

分割数を指定しない場合と異なるのは、分割結果として要素の値がない部分についても、そのまま配列の要素として残されている点です。サンプルコードの実行結果を見比べてみてください。

分割数に負の値または要素数より大きな値を指定した結果
【サンプルコード】
s = "one,two,three,four,five,,,,,"
p s.split(",")
p s.split(",", -1)
p s.split(",", 15)
【実行結果】
["one", "two", "three", "four", "five"]
["one", "two", "three", "four", "five", "", "", "", "", ""]
["one", "two", "three", "four", "five", "", "", "", "", ""]

プログラムの中でsplitを活用しましょう!

ここまでRubyのsplitの使い方を見てきて、いかがだったでしょうか。splitはRuby以外のプログラムでもよく使われる文字列の分割メソッドとも、大きく使い方が異なることもなく、使いやすいメソッドといえます。

Rubyで文字列の分割を行いたい場合は、splitメソッドを使うのだと、すぐに思い浮かべられるようにしておきましょう。そのためには、splitを積極的に使って、動作確認を行うのが近道です。

【PR】多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boostについて

オーダーメイド型の学習コンテンツを提供する「tech boost」 は、エンジニアのキャリア支援に特化したサービスを複数展開している株式会社Branding Engineerが運営しているプログラミングスクールです。最短3ヶ月間で、未経験から『プログラミングの基礎』、『実際に業務で必要となるスキル』、『今のトレンドとなっている知識』まで学べ、ご希望の方にはプロのキャリアアドバイザーによる就業支援を行うことができます。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related