Paizaのスキルチェック問題や開発の際によく使うRubyのメソッドをまとめてみた


はじめに

以前、某企業のエンジニアのコーディングテストを受けた際にリファレンスを見ながらではなく、ある程度のメソッドを覚えておく必要があると感じたので、復習がてらPaizaのスキルチェックや開発でよく使うRubyのメソッドをまとめてみました。

slice

引数に指定した分の文字列を取り出す

alphabet = "abcde"
alphabet.slice(1..2)
"bc"

gsub

文字列を置換する。第一引数に変換したいパターン(正規表現)、第二引数に置換したい文字列を指定する。

alphabet = "abcde"
alphabet.gsub(/bc/, "a")
"aade"

sort

sortは昇順と降順どちらに並び替えることが可能。


まずは昇順に並び替えたい場合

numbers = [5, 3, 2, 9, 1]
numbers.sort
[1, 2, 3, 5, 9]



次に降順に並び替えたい場合

numbers = [5, 3, 2, 9, 1]
numbers.sort { |a, b| b <=> a }
[9, 5, 3, 2, 1]

reverse

文字列の場合、反転させる

name = "Taro"
name.reverse
"oraT"



配列の場合は順番を入れ替える

numbers = [5, 3, 2, 9, 1]
numbers.reverse
[1, 9, 2, 3, 5]

pushとunshift

pushは、配列の末尾に指定した引数を追加する

alphabet = ["a", "b", "c", "d"]
alphabet.push("e") #alphabet << "e"でもOK
["a", "b", "c", "d", "e"]



unshiftは、配列の先頭に引数で指定した要素を追加する

alphabet = ["a", "b", "c", "d"]
alphabet.unshift("0")
["0", "a", "b", "c", "d"]

round

数値を四捨五入する

1.3.round
=> 1
1.5.round
=> 2

chomp

文字列の末尾にある改行文字を取り除く(改行文字がない場合は何もしない)

acquisition = gets #getsはキーボードで入力した値を文字列で取得するメソッド
hello
=> "hello\n"
acquisition.chomp
=> "hello"

uniq

重複した要素を削除する

num = [0, 1, 1, 1, 2, 4]
num.uniq
[0, 1, 2, 4]

map

要素数だけブロックを実行し、ブロックを評価した新たな配列を作成して返す

numbers = ["0", "1", "1", "1", "2", "4"]
numbers.map { |item| item.to_i }
[0, 1, 1, 1, 2, 4]


上記のブロック部分は省略記法を用いる場合が多く、下記のようになっていることが多い。

numbers = ["0", "1", "1", "1", "2", "4"]
numbers.map(&:to_i)
[0, 1, 1, 1, 2, 4]

select

ブロック内の戻り値が真になったものを新たな配列として返す

numbers = [0, 1, 2, 3, 4]
numbers.select { |item| item % 2 == 0 }
[0, 2, 4]

join

文字列を連結する

numbers = ["0", "1", "1", "1", "2", "4"]
numbers.join
"011124"


引数に区切り文字を指定して分けることもできる

numbers = ["0", "1", "1", "1", "2", "4"]
numbers.join(",")
"0,1,1,1,2,4"

count

配列の要素数または、引数で指定した文字列or要素の数を数える

maxとmin

最大と最小の値を返す

upcaseとdowncase

それぞれ大文字と小文字にする

alphabet = "abcde"
alphabet.upcase
"ABCDE"


alphabet = "ABCDE"
alphabet.downcase
"abcde"

abs

絶対値を求めることができる

num = -1
num.abs
1

おわりに

Paizaや開発で使っていたrubyのメソッドを紹介しました。随時更新していきたいと思っています。何かもっと便利でよく使ってるよというメソッドがあれば教えてください!