決められないは悪の火曜日【TECH::EXPERT】

Ruby TECH::EXPERT 応用カリキュラム編

【本日のメニュー】
・応用カリキュラム開始【始まり〜正規表現】
・subメソッド
・matchメソッド
・gsubメソッド
・よく使いそうメモ
・今後のプロゲート

 

【応用カリキュラム開始】
質問方法が変わるらしいですね。まだ制作入ってないので、質問することないですが気軽に質問できなくなってきたのは、なんだかさみしいなぁ〜。

 

【subメソッド】

#[変数名].sub(/置換したい文字列/,”この文字列で置換”)

str = "ハンバーグおいしい"
=> “ハンバーグおいしい”
str.sub (/ハンバーグ/,"ステーキ")
=> “ステーキおいしい”

・sub最初に一致した箇所のみ置換する
・gsub一致した全てを置換する
・例題に出てくるstrの意味は多分string(文字列の略じゃね)
置換ってエクセルとかでよくお世話になりますからね〜。プログラミングでもお世話になりそう。

個人的にハンバーグ否定派で、ハンバーグという文字列が出たらステーキで置換してやろうと思いまして、上記のような例題試しました。

でもステーキが好きだから「sub」って響きがなんかやだな「main」だろって思ったんです。置換ってsub〜なのかな?って思って英語を検索したら「substitute(代替)」っていう英語が元ネタっぽいっすね。

だからステーキがメインだって言ってんだろいい加減にしろ!

 

【matchメソッド】

#[変数1] = [変数2].match(/文字列/)
#[変数2]に含まれてる/文字列/を取り出して[変数1]に代入

変数内の文字列の中から、指定した文字列と一致するものをピックアップするためのもののようです。

なぜtrueで返さないんだ?と思ったのですが、
例えば、焼肉屋で「カルビ!ロース!レバー!」と頼まれて、現在お店に置いているのは「カルビ」のみだった場合、注文が通るのは「カルビ」のみ的な。

カリキュラムの例題だと文字列の内容が少ないのでわかりにくいですが、要素を増やしてみるとこのメソッドに頼るべき事柄が見える気がする。

正規表現ってたくさんのものを一気に処理するためにあるんでしょう?

 

【gsubメソッド】

nikumoney_id = ‘0000-0000-0000-0000’
=> ‘0000-0000-0000-0000’

nikumoney_id.sub(/-/,’’)
=> ‘00000000-0000-0000’
#最初のハイフンしか置換されない

nikumoney_id.gsub(/-/,’’) #これをgsubに変えると?
=> ‘0000000000000000’
#全てのハイフンが消えます。

gsubのおかげてsubの使い方がイマイチわかりません。
例えば、HTMLでリストドットをつけるから文頭の「・」消したい
でも、映画や漫画のタイトルの中にあるような「・」を消したくない時とか?

【よく使いそうメモ】
・[a-z]: 角括弧で囲まれた文字のいずれか 1 個にマッチ
・\d: 数字にマッチ
・{n, m}: 直前の文字が少なくとも n 回、多くても m 回出現するものにマッチ
・i: 大文字・小文字を区別しない検索
例)パスワードに英数字8文字以上という制約を設定
pass = ‘Hoge1234’
pass.match(/[a-z\d]{8,}/i)

【今後のプロゲート】
今までrailsやRubyなどで試験対策していましたが、応用カリキュラムに入り、JsやらJQやら出てきそうなのと、理解度テストにHTMLが出るそうなので、
途中まで進めていたレッスンは途中にして応用カリキュラムに出てくるやつだけやって行く作戦で行こうかと思います。