代々木で働く超新米エンジニアの足跡

代々木で働くエンジニアです。超新米です。

count uniq 正規表現 桁数範囲 inject map compact

配列関係

  • count
配列名.count

配列の要素の数をカウント

参考:count (Array) - Rubyリファレンス

  • 配列内の重複する要素を取り出す
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