count uniq 正規表現 桁数範囲 inject map compact
配列関係
- count
配列名.count
配列の要素の数をカウント
- 配列内の重複する要素を取り出す
a = [1, 2, 3, 4, 5, 6, 5, 4] a.inject(Hash.new(0)){|h, key| h[key] += 1; h}.map {|k,v| k if v >= 2}.compact #=> [4, 5]
参考:Rubyで配列内の重複する値を抽出する方法 - 久保清隆のブログ
- inject
numbers = [4, 3, 9, 8, 5, 6, 1, 7, 2] puts numbers.inject {|sum, n| sum + n }
例えばこれだと、はじめに4+3=7、次に7+9=16、次に16+8...というふうに計算していく。
sumは前回の計算結果が格納されていく。
説明が難しい。繰り返しの計算につかう。参考を見る方が早い.
参考:inject (Enumerable) - Rubyリファレンス
- map
配列の要素の個数だけブロック内の処理を繰り返してくれる
numbers = ["68", "65", "6C", "6C", "6F"] p numbers.map {|item| item.to_i(16) }
これだと、{item~}をnumbersの要素の数だけ繰り返す。
ちなみに、.to_i(16)は16進法に書き換える
参考:map, map! (Array) - Rubyリファレンス
- compact
配列からnilを取り除いた、新たな配列を返してくれる
- uniq uniq!
配列から重複したものを削除して、新たな配列を返してくれる
uniq!はもともとの配列を消して新しい配列に変えてしまう。
uniqはもともとのほうはきえない
正規表現
- 桁数の範囲を指定
\d{2,5}
2桁~5桁
- 末尾を指定
/(\d{1}$)/
末尾の1桁の数字
文字と数字の混合にも数字を抽出につかえる
参考:正規表現サンプル(桁数を範囲指定して数字を検索する)
忘れっぽい人のための正規表現チートシート - Qiita