NaaN日記

やったこと、覚えたことを発信する場

取り除いたりする(Ruby)

取り除くで!!という感じのものをまとめた

○末尾の改行文字(\n, \r)を取り除く

chomp
chomp!

chomp!はレシーバ自身を変更する。
引数に文字列を指定すると、その文字列を改行文字とみなす
末尾に改行文字があればレシーバ自身、ない時はnilを戻り値とする

>> moji = gets #Hello Curryと入力
>> moji
=> "Hello Curry\n"
>> moji.chomp #改行文字を取り除く
=> "Hello Curry"
>> moji
=> "Hello Curry\n"
>> moji.chomp! #レシーバ自身を変更
=> "Hello Curry"
>> moji
=> "Hello Curry"
>> moji.chomp!("y") #文字列を指定
=> "Hello Curr"

○末尾から1文字取り除く

chop
chop!

chop!はレシーバ自身を変更する。
末尾が"\r\n"で終わっている場合は"\r\n"を取り除く
漢字のように2バイト以上の文字でも1文字分消してくれる

>> moji = gets # Hello Curry
=> "Hello Curry\n"
>> moji.chop # 1文字(\n)取り除く
=> "Hello Curry"
>> moji.chop!
=> "Hello Curry"
>> moji
=> "Hello Curry"
>> moji.chop! # 1文字(y)取り除く
=> "Hello Curr"
>> moji
=> "Hello Curr"

○文字列の先頭の空白文字を取り除く

lstrip
lstrip!

lstrip!はレシーバ自身を変更する。

>> moji = gets"    Hello Curry\n"
>> moji.lstrip
=> "Hello Curry\n"
>> moji
=> "    Hello Curry\n"
>> moji.lstrip!
=> "Hello Curry\n"
>> moji
=> "Hello Curry\n"

○文字列の末尾の空白文字を取り除く

rstrip
rstrip!

rstrip!はレシーバ自身を変更する。
半角空白・タブ・復帰・改行・末尾のヌル文字など

>> moji = gets # "Hello Curry    \n"
=> "Hello Curry    \n"
>> moji.rstrip
=> "Hello Curry"
>> p moji
=> "Hello Curry    \n"
>> moji.rstrip!
=> "Hello Curry"
>> moji
=> "Hello Curry"
>> moji
=> "Hello Curry"
>> moji.rstrip! # 末尾が空白文字でないとき
=> nil

○文字の先頭と末尾の空白文字を取り除く

strip
strip!

strip!はレシーバ自身を変更する。

>> moji = gets # "   Hello Curry   \n"
>> moji.strip
=> "Hello Curry"
>> moji
=> "   Hello Curry   \n"
>> moji.strip!
=> "Hello Curry"
>> moji
=> "Hello Curry"

○配列の末尾の要素を削除し要素を返す

pop

レシーバ自身を変更する
空の時はnilを返す

>> list = ["N", "a", "a", "n", "\n"]
>> list.pop
=> "\n" # 末尾の要素
>> list
=> ["N", "a", "a", "n"] # list自身が変更された

○配列の先頭の要素を削除し要素を返す

shift

レシーバ自身を変更する
空の時はnilを返す

>> list = ["K", "a", "n", "p", "a", "n"]
>> list.shift
=> "K" # 先頭の要素
>> list
=> ["a", "n", "p", "a", "n"]