目的
- 人のコードを読んでいるときに「gsub」が分からなかったので調べた内容メモ
条件
- ruby 2.4.1
目次
- subメソッドとは
- gsubメソッドとは
- gsubメソッドのスニペット
subメソッドとは
subメソッドは指定したパターンにマッチした最初の部分を特定の文字列に置換します。パターンには文字列や正規表現が使えます。
irbでやってみた
# 変数aに'shimada-shimada'を代入
a = 'shimada-shimada'
# 'shimada-shimada'の最初の'shi'を'ya'に置換する
a.sub(/shi/, 'ya')
# 第1引数に最初にマッチした置換されるパターン文字(正規表現)を指定
# 第2引数に置換したい新しい文字列を指定
結果
=> "yamada-shimada"
# 最初にマッチした'shi'が'ya'に置換される
ブロックをとる場合
# 変数aに'shimada-shimada'を代入
a = 'shimada-shimada'
# 'shimada-shimada'の最初の'shi'を'ya'に置換する
a.sub(/shi/) {|str| 'ya'}
結果
=> "yamada-shimada"
# 最初にマッチした'shi'が'ya'に置換される
---
a.sub(/\w+/) {|str| str.upcase}
結果
=> "SHIMADA-shimada"
# 最初にマッチした'shi'のブロックを大文字にする
gsubメソッドとは
gsubメソッドはマッチしたすべての部分を特定の文字列に置換します。パターンには文字列や正規表現が使えます。
irbでやってみた
# 変数aに'shimada-shimada'を代入
a = 'shimada-shimada'
# 'shimada-shimada'の最初の'shi'を'ya'に置換する
a.gsub(/shi/, 'ya')
# 第1引数にマッチした置換されるパターン文字(正規表現)を指定
# 第2引数に置換したい新しい文字列を指定
結果
=> "yamada-yamada"
# 全てマッチした'shi'が'ya'に置換される
ブロックをとる場合
# 変数aに'shimada-shimada'を代入
a = 'shimada-shimada'
# 'shimada-shimada'の最初の'shi'を'ya'に置換する
a.gsub(/shi/) {|str| 'ya'}
結果
=> "yamada-yamada"
# マッチした'shi'が'ya'に置換される
---
a.gsub(/\w+/) {|str| str.upcase}
結果
=> "SHIMADA-SHIMADA"
# マッチした'shi'のブロックを大文字にする
gsubメソッドのスニペット
def normalize(str)
str.strip # 前後の空白除去
.tr("0-9a-zA-Z ()-−", "0-9a-zA-Z ()-") # 全角英数字を半角に
.gsub("\t", ' ').gsub(/ +/, " ") # 空白を単一半角スペースに統一
.gsub("\r\n", "\n").gsub("\r", "\n") # 改行を\nに統一
end
まとめ
いろいろ調べてみると「gsubメソッド」は結構使いそう。あと「正規表現」