概要
パーフェクトRubyを読んでいて便利だと思ったもの一覧です。
Enumerable編
http://qiita.com/kidachi_/items/a00558cfb0a6a3e23f4b
Array編
http://qiita.com/kidachi_/items/e9cb26c4e6cb36b70a1c
Hash編
http://qiita.com/kidachi_/items/651b5b5580be40ad047e
文字列の整形
strip
余分な空白を削除。
> " Ruby \n\t ".strip
=> "Ruby"
squeeze
重複文字列の削除
> 'Ruuuubbbbyyyyy'.squeeze
=> "Ruby"
# 選択した文字のみ重複削除
> 'Ruuuubbbbyyyyy'.squeeze('ub')
=> "Rubyyyyy"
sub
あるパターンに最初にマッチした文字列を置換。
> 'Ruby is practical programming language!'.sub(/p.*?\s/, 'awesome ')
=> "Ruby is awesome programming language!"
gsub
マッチした文字列すべてを置換。
> 'Ruby is practical programming language!'.gsub(/p.*?\s/, 'awesome ')
=> "Ruby is awesome awesome language!"
# マッチした文字列はブロックに与えて操作することも出来る。
> 'Ruby is practical programming language!'.gsub(/p.*?\s/){|str| str.upcase}
=> "Ruby is PRACTICAL PROGRAMMING language!"
# マッチした文字列情報を$&で取得。
> 'Ruby is practical programming language!'.gsub(/p.*?\s/){ $&.to_s.upcase}
=> "Ruby is PRACTICAL PROGRAMMING language!"
split
特定の文字列をセパレータに指定して分割した要素を、配列として返却。
> str = 'Ruby, Python, Java'
> str.split(', ')
=> ["Ruby", "Python", "Java"]
# 正規表現も可
> str.split(/,\s/)
=> ["Ruby", "Python", "Java"]
# 第2引数を与えると、その数以上は分割しない。
> str.split(/,\s/, 2)
=> ["Ruby", "Python, Java"]
部分文字列の取得
slice
部分文字列の取得。
# 始点から終点を指定
> 'Ruby is my 1st language!'.slice(0..3)
=> "Ruby"
# 正規表現での指定も可能
> 'Ruby is my 1st language!'.slice(/[0-9]+/)
=> "1"
繰り返し処理
each_char
文字ごとの繰り返し
> 'Ruby'.each_char {|c| str << "#{c}!"}
> p str
"R!u!b!y!"
each_line
行ごとの繰り返し
> "Ruby\nis\ngood\nlanguage!".each_line { |line| puts line }
Ruby
is
good
language!
each_byte
バイトごとの繰り返し
> 'Ruby'.each_byte { |b| puts b}
82
117
98
121