Rubyの文字列操作、結構使うのですがよく忘れてgoogle先生のお世話になることが多かったので、頻出のメソッドと記法をまとめておきたいと思います。
文字列の途中を別の文字列で入れ替える
String#gsubを使います。
'vimは神エディタ'.gsub('vim','emacs') #=> 'emacsは神エディタ'
文字列の長さをカウントする
String#length、もしくはString#sizeで取得できます。
'hoge'.length # => 4 'foo'.size # =>3
なお、時々「文字列の長さではなくバイト数を取得したい」というケースがあると思います。
その場合は、String#bytesizeを使います。
'ほげ'.bytesize # =>6(UTF-8の場合)
文字列を配列に変換する
String#splitを使います。
'hoge fuga foo bar'.split(' ') # => ['hoge','fuga','foo','bar']
ちなみに、配列->文字列の場合はArray#joinを使います。
%w(ruby java python).join(',') # => "ruby,java,python"
文字列の前後の空白を取り除く
String#stripを使います。
' hoge '.strip # => 'hoge'
ある文字列を含んでいるかどうかを判定する
String#include?を使います。
'abcdefg'.include?('cde')
または、正規表現オブジェクトを使って
/cde/.match('abcdefg')
と書きます。この場合、マッチする場合はMatchDataオブジェクト、マッチしない場合はnilを返します。
文字列の中に数字を特定の形式で埋め込む
%演算子を使います。
'Result: %04d' % 42 => 'Result:0042'
空文字かどうかを判定する
String#empty?を使いますが、このメソッドはレシーバがnilだとエラーになります。
''.empty? #=> true nil.empty? #=> NoMethodError: undefined method `empty?' for nil:NilClass
Rails環境下では、ActiveSupportのblank?メソッドを使ったほうが良いでしょう。
''.blank? #=> true nil.blank? #=> true
大文字⇔小文字の変換
String#downcase,String#upcase,String#swapcase,String#capitalizeなど
'hello'.upcase # -> 'HELLO' 'WE CAN DO IT'.downcase => 'we can do it' 'pWc'.swapcase => 'PwC' 'title'.capitalize => 'Title'
RailsのActiveSupportが存在するコンテクストであれば、String#camelizeも使えます。
'active_support'.camelize #=> 'ActiveSupport'
irbでメソッドの挙動を確認する
StringクラスはRuby組み込みクラスですので、irbを使って対話的に動作を確認することができます。
$ irb
と入力して、irbが立ち上がったら上述したコードを打ち込んでみて動作確認をすると良いです。
さらに詳しく知りたい方は最近発売された「パーフェクト Ruby改訂2版」がおすすめです。
Railsの本は比較的多めに出回っていますが、腰を据えてどっしりRubyそのものと向き合うのも悪くないと思いますよ。