String#... の取捨選択
「文字列」は、ただStringクラスの解説をするだけではなく、基礎編と応用編の中間に位置するので、前後の内容を踏まえたバランスが必要。以前に書いた基礎編を読み返して、スムーズな流れを作らないと。
Stringクラスの持つメソッドで紹介すべきものはどれか。
- capitalize, capitalize!
- downcase, downcase!
- upcase, upcase!
- swapcase, swapcase!
- → $KCODE が適切に設定されていなければ、漢字コードの一部も変換してしまいます(これは、ShiftJIS コードで起こり得ます)。逆に、$KCODE を設定してもマルチバイト文字のアルファベットは処理しません。
- +
- chomp, chomp!
- sub, sub! 1.7 以降は、その文字列そのものがパターンになります。
- gsub!, gsub!
- length, size
- oct, hex, to_i, to_f
- → 逆に、数値を文字列に変換するには sprintf, %, Integer#to_s を使用します。
p "0b10".to_i(0) # => 2 p "0o10".to_i(0) # => 8 p "010".to_i(0) # => 8 p "0d10".to_i(0) # => 10 p "0x10".to_i(0) # => 16
- reverse, reverse!
- scan 配列を返す。ブロックを与えると繰り返し処理
- split
- each, each_line 1.9でeachがなくなる。1.8はどちらも可
メソッド選び、取捨選択が難しい。自分が何年間もRubyコード書き続けてきた経験を重視して選びたい。