rubysilverを勉強するためのサイトのRexを勉強してわからなかったメソッドがあったので備忘録として残しておきます
https://rex.libertyfish.co.jp/
##Stripメソッド
stripという英語の意味は、「剥ぎ取る」という意味です
結論からいうと、文字列先頭と末尾の空白文字を全て取り除いた文字列を生成して返すメソッドなんです。
ruby 公式ドキュメントより
このリファレンスに書いてあるのですが、「空白文字の定義は " \t\r\n\f\v"」と書いてあるんです。
そこで思ったのが、「\t\r\n\f\v」ってなに?って思ったんですよね。
(この文字列の中にスペースも入ってるのでご注意を)
ここで大事になるのが、正規表現についての知識が必要になるんですよね。
よく調べたら、これがrubyの公式ドキュメントに載っていたんです。さすが公式ドキュメントですね!
こんなふうにまとまっているんですね!めちゃわかりやすい!
1つ1つ順に説明していきますね!
\tは水平タブを表しています。水平タブって言われるとピンと来ないかもしれないですが、僕らにパソコンについてるtabキーのことです。
\vは調べたのですが、ぶっちゃけよく分からなかったです。ただ、wikipediaを調べると、今はもうほぼ使われていないそうです。(わかる方いらっしゃいましたら、ご教示いただけると嬉しいです)
\r,\n,\r\nは改行という意味です。意味はすべて同じです。では何が違うのかというと、動くOSが違うというところが挙げられます。
\rはmac,\nはUNIX全般, \r\nはwindows系全般です。
こちらの記事が参考になるとおもいますので、ぜひ参考にしてみてください!
\fは文字通り、ページを改めるということです。新しいページに移るということです。wordで作業したことがある方ならピンとくるかもしれないですね!
このように、stripメソッドは、これらの空白文字が文字列の先頭や末尾にあったら、取り除いてくれるというものです。
p " abc \r\n".strip #=> "abc"
p "abc\n".strip #=> "abc"
p " abc".strip #=> "abc"
p "abc".strip #=> "abc"
str = "\tabc\n"
p str.strip #=> "abc"
p str #=> "\tabc\n" (元の文字列は変化しない)
なんとなく見ればわかるかとおもいます。スペースは\tのことですね。
##lstripメソッド
stripメソッドに関連するメソッドとして、lstripメソッドがあります。
このメソッドは、文字列の先頭にある空白文字を全て取り除いた新しい文字列を返します。空白の定義は、同じく「\t\r\n\f\v」です。
stripメソッドとの違いは、末尾の空白は取り除かないということです。
lstripの「l」はleadのlだとおもわれます。leadは先頭っていう意味なので、覚えやすいですね。
p " abc\n".lstrip #=> "abc\n"
p "\t abc\n".lstrip #=> "abc\n"
p "abc\n".lstrip #=> "abc\n"
##rstripメソッド
rstripメソッドの特徴は、文字列の末尾にある空白文字をすべて取り除いた新しい文字列を返すというものです。空白文字の定義は、
「 \t\r\n\f\v\0」
0があることが他のメソッドと違うところですね!
今後の課題としては、\0が何を表しているかを調べていくことです!
(わかる方いらっしゃいましたら、ご教示いただけますと幸いです。)
以上です!