Rubyチートシート
たまに使おうと思うと忘れていて毎回リファレンスを見る→理解する→書くが面倒なので、自分が一瞬で思い出せるようにメモ。
文字列処理
特定の文字列を切り出したい
- slice : 何文字目から何文字分切り出すって時に使う。戻り値は切り取られた値。[]と同義。
str = "hello" str.slice(0, 2) => "he" # str[0,2]と同義 str.slice(/\w+/) => "hello" # 正規表現も使える
- match : 正規表現を引数にしてMatchDataを返す。(MatchDataに対する理解がイマイチ)
str = "おじいさんは山へ芝刈りにおばあさんは川へ洗濯に行きました。 str.match(/おじいさん/) => #<MatchData "おじいさん">
特定の文字列にマッチするものを全て切り出したい
- scan : マッチしたものを全て配列に格納して返す
str = "hello goodmorning goodnight" str.scan(/\w+/) =>["hello", "goodmorning", "goodnight"]
特定の文字列を特定の文字列で置換したい
- gsub
str = "good morning hello good night" str.gsub("good", "great") => "great morning hello great night"
特定の文字列を削除したい
- delete: 特定の文字列を削除したい時に使う。削除する文字列があった場合は削除後の文字列、ない場合はnilが戻り値になる。
str = "hejamallojama" str.delete("jama") => "hello" str.delete("nai") => nil
配列
配列をくっつけて文字列にしたい
- join
array = ["東京", "大阪", "名古屋"] array.join("|") => "東京|大阪|名古屋"
配列から特定の条件に合う要素を取得したい
- select : ブロック内の条件に合う要素を配列で返す
array = %i(10 20 30 40) array.select{|num| num > 20} => [30, 40] array.select{|num| num > 30} => [40] #要素が1つでも配列として返るので注意が必要 array.select{|num| num > 50} => []
その他よく忘れる系
- tap :tapメソッドは、ブロック変数にレシーバ自身を入れてブロックを実行します。戻り値はレシーバ自身です。メソッドチェーンの中にtapメソッドをはさみ込み、ソースコードを簡潔にする目的で使われます。ポイントはブロック内にレシーバ自身が入ること。 理解するためだけの単純な例
array = [10, 20, 30] array.tap{ |array| array << 40 } #array自身がブロックに渡される。 => [10, 20, 30, 40]