LoginSignup
0
0

More than 1 year has passed since last update.

[Rails,Ruby]文字列の置換(gsub,sub)

Last updated at Posted at 2022-09-16

はじめに

正規表現について学んでいたら、文字を置換する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メソッドの使い方です。
数行で終わる話を最後までお読み頂きありがとうございました。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0