【完全網羅】Ruby 文字列の抽出メソッドまとめ(match, slice,[])

どうも!
インストラクターのババです!

文字列の抽出は文字列操作の中でもよく使用する処理です!
しかし、メソッドがいろいろありすぎて、使い分けがわからないという方が多々いらっしゃると思います。
そんな疑問に応えるために、文字列から文字を抽出するメソッドの使い分けについて解説していきます!
これを読めば、抽出メソッドについてさらに詳しくなることができるでしょう!
それでは行ってみましょう!

目次

抽出するメソッド

shutterstock_156897374

slice

sliceは範囲や文字で文字列を指定して、その部分を抜き取るメソッドです。

p "ruby".slice(0) # => "r"
p "ruby".slice(0,3) # => "rub"
p "ruby".slice(0..3) # => "rub"

数字で指定した場合は、上のように指定された数字、範囲で文字を抽出することができます!
プログラミング全般に言えることですが、0が一番目ということは注意してください!

sliceの引数には正規表現や文字列を渡すこともできます。

p "ruby".slice(/ru/) # => "ru"
p "ruby".slice("by") # => "by"

正規表現や文字列を渡すと、それにマッチした値が抽出されます。

[]

sliceの簡略化したメソッドとしてよく使用されるのが「[]」です。
使い方はsliceの部分を[]に変えてあげるだけです。

p "ruby"[0] # => "r"
p "ruby"[0,3] # => "rub"
p "ruby"[0..3] # => "rub"
p "ruby"[/ru/] # => "ru"
p "ruby"["by"] # => "by"

こちらのメソッドの方がより簡単に書くことができるので、オススメしたい記法です!

match

matchは少し使い方の難しいメソッドです。
matchは引数に与えた正規表現にマッチする部分を抽出するのですが、長さが2の配列で返ってきます。

p "ruby".match(/r(\w+)y/)
#

配列の[0]にはマッチした文字列自体が、[1]には()で囲われた部分の文字が入ります。
なので、囲まれている文字はわかっていて、その間の文字列を取りたいなんてときは重宝するメソッドになっています!

まとめ

今回はrubyの文字列の抽出について解説していきました。
抽出は、「ある文字が入っていたらtrue」などの条件分岐の部分でよく使用します。
いくつかメソッドがありますが、しっかり使い分けするようにしていきましょう!

Rubyの文字列をしっかり理解したい方に

この記事は文字列を体系的に解説した3ステップで簡単! Rubyの文字列を 完全理解の一部となります。
文字列をさらに理解したい方はこちらを読んでどんどん理解を深めていくようにしましょう。

この記事を書いた人

こんにちは!
今年大学を飛び出し、フリーランスエンジニアとして働いています、ババです!

エンジニアはしんどい仕事と思われていますが、実はそんなにしんどくなくて、お金ももらえて、社会のためになる素晴らしい仕事というのを伝えるために、侍で業務委託として働いています!!

フリーランスの日常やら書いているブログやってます=>http://www.babashun.net/

目次