rubyシルバーを勉強していくなかで、rubyの正規表現についてわからなかったので、解説していこうとおもいます。
今回は問題をもとにして、解説していこうとおもいます。
この問題を解く上で、必要になる知識が
➀破壊的メソッド
➁正規表現
➀破壊的メソッド
破壊的メソッドとは、オブジェクト自体を変更してしまうメソッドのことです。
破壊的メソッドがあるなら、非破壊的メソッドもあります。
言われてもピンとこないとおもいますので、この2つを比較しながら実際にコードを見ていきましょう
## 非破壊的メソッド
string = 'abcdefgh'
string.delete('a')
=> "bcdefgh"
p string
=> "abcdefgh"
## 破壊的メソッド
string = 'abcdefgh'
string.delete!('a')
=> "bcdefgh"
p string
=> "bcdefgh"
この2つからも分かる通り、前者は、aを削除しているのですが、stringを出力すると、aは削除されていないんですよね。
それに対して、後者は、aを削除して、stringを出力すると、a自体も削除されてしまうんです。
破壊的メソッドは原則的にメソッドの最後に「!」がつきます。あくまで原則ですので、気をつけてくださいね。
update,clearメソッドは「!」はついてませんが、破壊的メソッドです。
➁正規表現
とっつきにくいかもしれませんが、めちゃ大事なので勉強していきましょう。ぼくはこちらのサイトを参考にしているので、こちらをブクマしてみてください!
今回の問題
実行結果をみたとき、「あー、破壊的メソッドじゃないとだめだなぁ」って思わないといけないですね。
そのため、選択肢➁、➂に絞られることがわかります。
選択肢➂をみていきましょう。
この選択肢での、正規表現の中身は「0と5~9以外の数字と-を削除する」という意味です。
そのため、この選択肢はダメですね
選択肢➁が正解になります。
2,3,4 と 1 と - 『以外を』全て削除するという意味ですので、これが正解になります。
以上です。
何か間違いがございましたら、ご教示いただけますと幸いです。