はじめに
paizaスキルチェックを使って勉強している時に調べたRubyの構文を忘れないうちにまとめておこうと思いました
配列
中身をStringからIntegerに変更する
array = array.map(&:to_i)
to_iをto_sに変えればStringクラスに変更する
中身をならべかえる
# arrayがIntegerクラスの場合
array = [3, 5, 23, 15, 1]
list = array.sort
p list #=> [1, 3, 5, 15, 23]
# arrayがStringクラスの場合
array = array.map(&:to_s)
list = array.sort
p list #=> ["1", "15", "23", "3", "5"]
配列の中身のクラスによって結果が変わるので配列の中身を意識する
順番を入れ替える
array = [3, 5, 23, 15, 1]
list = array.reverse
p list #=> [1, 15, 23, 5, 3]
配列、文字列に特定の文字が含まれているか調べる
array = [3, 5, 23, 15, 1]
p array.include?(1) #=> true
p array.include?(4) #=> false
str = "apple"
p str.include?("ppl") #=> true
n番目を消す
# 2番目の要素を消す
array = [3, 5, 23, 15, 1]
array.delete_at(1)
p array #=> [3, 23, 15, 1]
# array.delete(1)とすると1があったら消す。似ているので注意
array = [3, 5, 23, 15, 1]
array.delete(1)
p array #=> [3, 5, 23, 15]
最後の要素を消す
array = [3, 5, 23, 15, 1]
array.pop
# array.delete_at(-1) でも可
p array #=> [3, 5, 23, 15]
要素を追加する
# 最後に追加
array = [3, 5, 23, 15, 1]
array.push(8)
# array << 8 でも可
p array #=> [3, 5, 23, 15, 1, 8]
# 最初に追加
array = [3, 5, 23, 15, 1]
array.unshift(8)
p array #=> [8, 3, 5, 23, 15, 1]
中身を合体する
array = [3, 5, 23, 15, 1]
p array.join #=> "3523151"
# joinに引数を渡すと間に入れてくれる
p array.join(" ") #=> "3 5 23 15 1"
p array.join("a") #=> "3a5a23a15a1"
最大のものを調べる
array = [3, 5, 23, 15, 1]
p array.max #=> 23
最も多いものを調べる
array = [1, 2, 3, 3, 4]
p array.max_by { |a| array.count(a) } #=> 3
# 同じ数のものが複数あった場合最初にある要素が出力される
array = [1, 2, 3, 3, 1, 4]
p array.max_by { |a| array.count(a) } #=> 1
文字数が多いものを調べる
array = ["apple", "orange", "lemon"]
p array.max_by { |a| a.size } #=> "orange"
ネストした配列の作り方
p array = Array.new(3).map { Array.new(2, 0) }
#=> [[0, 0], [0, 0], [0, 0]]
文字
切り捨て、切り上げ、四捨五入
f = 3.5
p f.floor #=> 3 切り捨て
p f.ceil #=> 4 切り上げ
p f.round #=> 4 四捨五入
絶対値
i = -1
p i.abs #=> 1
0010と表示したい
p format('%04d', 10) #=> "0010"
p ('%04d' % 10) #=> "0010"
文字と文字コード
str = "a"
p code = str.ord #=> 97
p code.chr #=> "a"
日付、時間
p Time.now #=> 今の時間
p Time.local(2000) #=> 2000-01-01 00:00:00 +0000
p t = Time.local(2000, 1, 2, 3, 45) #=> 2000-01-02 03:45:00 +0000
# フォーマットで表示を指定
p t.strftime("%H:%M") #=> "03:45"
最後に
自分用にまとめただけですが、これが誰かの役に立てれば幸いです。
参考
- 指定フォーマットで文字列に変換する
https://www.javadrive.jp/ruby/date_class/index5.html - Rubyの文字列に対応する文字コードを返す方法【初心者向け】
https://techacademy.jp/magazine/19641 - Ruby 配列が初心者でもわかる!7個の重要なメソッドも紹介
https://udemy.benesse.co.jp/development/web/ruby-array.html - 【Ruby入門】配列の基礎から応用的な使い方まとめ
https://www.sejuku.net/blog/11504 - Rubyの配列で使えるメソッド、二次元配列の使い方
https://qiita.com/dddisk/items/8ad2d5570edf3c577eea - 言語別 0埋め数字を作成する方法
https://qiita.com/tksmaru/items/0f9283d0c5f0ee716f2f