Rubyの文字列(Stringクラス)操作でよく使うメソッドまとめ


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そのものと向き合うのも悪くないと思いますよ。