はじめに
正規表現について学んでいたら、文字を置換するgsub
メソッドが出てきたので練習も兼ねて遊んでみました。
gsub
文字列内に指定した文字が複数含まれている場合、その全てを置換します。
使用例の前に突然ですが穴埋め問題です。(同じ数字には同じ単語が入ります)
皆さんは高校野球・山下智茂監督のこの名言をご存知ですか?
心が変われば(1)が変わる
(1)が変われば(2)が変わる
(2)が変われば(3)が変わる
(3)が変われば運命が変わる
答えは1から順に行動
、習慣
、人格
です。
では答えを数字の部分に置換しましょう。
q = "心が変われば(1)が変わる\n
(1)が変われば(2)が変わる\n
(2)が変われば(3)が変わる\n
(3)が変われば運命が変わる"
a = q.gsub(/1/,'行動').gsub(/2/,'習慣').gsub(/3/,'人格')
puts a
すると以下のように出力されます。
心が変われば(行動)が変わる
(行動)が変われば(習慣)が変わる
(習慣)が変われば(人格)が変わる
(人格)が変われば運命が変わる
では、gsub
の使い方です。
文字列.gsub(/置き換えたい文字列/,'置換後の文字列')
第1引数に置き換えたい文字列を/
で挟み指定します。
第2引数に置換後の文字列を指定します。
第2引数を''
とすれば空文字に置換できます。
[例]たぬき暗号
cipher = 'こたれはもたじたれたつたちかたんのれたんたしゅうたです。'
plain_text = cipher.gsub(/た/,'')
puts plain_text
# 出力結果
# これはもじれつちかんのれんしゅうです。
sub
ここでgsub
に似たsub
について確認します。
文字列を置換できることや、引数の指定の方法はgsub
と変わりませんが、sub
では最初にマッチした1つだけしか置換されません。
[例]
q = 'いっぱい'
puts "A「#{q}の「い」を「お」に変えて言ってみて~」"
puts "B「#{q.sub(/い/,'お')}?」"
puts "A「ブー!!正解は#{q.gsub(/い/,'お')}でした〜」"
出力結果は各自で確認してください。小学生の頃を思い出しますね笑
最後に
真面目に名言から始めたのに締まらないですが以上がsub
メソッドとgsub
メソッドの使い方です。
数行で終わる話を最後までお読み頂きありがとうございました。