Rubyで便利だなって思うあれこれ
・正規表現で文字列の中から数字だけを取り出す
a = gets.chomp ↓ AWBWCWDWEWFWGWH puts a.gsub(/[AEGIOSZ]/,"A" => "a", "B" => "b", "C" => "c", "D" => "d", "F" => "f", "G" => "g", "H" => "h") ↓ aWBWCWDWWFWgWH
[AEGIOSZ]←はこの中で当てはまるものだけって事
・1部分の文字を正規表現で消す(破壊的)
a = "aaabbbcccddd" puts a.gsub!(/ccc+/, '') ↓ aaabbbddd
・正規表現で文字列の置き換え
a = gets.chomp ↓ kamukayakarakauy puts a.gsub(/(ka)/, "///") ↓ ///mu///ya///ra///uy
・文字列になっている数字を数値に変換する
a = ["9", "9", "8", "6", "1"] a.map(&:to_i) ↓ [9, 9, 8, 6, 1]
・配列に入っている数値の合計を求める
a = [9, 9, 8, 6, 1] a.inject(:+) ↓ 33
・配列の要素を半角スペース区切りで出力する
・1次元配列の場合
array = ["aaa", "bbb", "ccc"] puts array.join(' ') ↓ aaa bbb ccc
・多次元配列の場合も一緒
array = ["aa", ["bb", "cc", ["dd", "ee"]], ["ff", "gg"]] puts array.join(' ') ↓ aa bb cc dd ee ff gg
・絶対値を求める
a = gets.chomp.to_i ↓ -1 -98 5 p a.abs ↓ 1 98 5
・printで空白スペースで出力したい
print 'foo', print 123, print 'bar' ↓ foo 123 bar
・繰り返し処理で横に出力したい時はprintメソッドを使う。
そして空白を空けたい時は
(i,(' '))
な書き方にする。
1.upto 5 do |i| print(i,(' ')) end ↓ 1 2 3 4 5空白
けどこの時,5の横に空白がある状態,空白がない様に出力したい時は
1.upto 4 do |i| print(i,(' ')) end 5.upto 5 do |i| print i end ↓ 1 2 3 4 5
・配列のインデックス番号を全部取得したい時
ary = [5, 4, 1, 7, 3, 8] p ary.each_with_index.select{|e, i| e >= 5}.map{|e| e[1]} ↓ [0, 3, 5]
他にも色々あるみたい
ary.each_with_index.each_with_object([]){|(e, i), acc| acc << i if e >= 5} ary.each_with_index.select{|e, i| e >= 5}.map{|e| e[1]} ary.each_with_index.each_with_object([]){|(e, i), acc| acc << i if e >= 5} ary.flat_map.with_index{|e,i|e>=5 ? i : []}