1年くらい前にRubyの勉強のためにStringクラスの便利メソッドをまとめたもの
参考
・パーフェクトRuby
・https://docs.ruby-lang.org/ja/latest/class/String.html
部分文字列の取得
slice
指定した任意の文字列を取得する
str = 'Super Multiple Vitamin 12'
# 範囲で指定
str.slice(6..10) #=> "Multi"
# 正規表現で指定
str.slice(/[0-9]+/) #=> "12"
文字列の整形
strip
両端の余分な空白文字(半角スペースと\t\r\n\f\v)を取り除く。
※全角のスペースは取り除かれない
" hi \t".strip #=> "hi"
" hi ".strip #=> "hi "
chop
文字種に関わらず末尾の1文字を取り除く
"client\n".chop #=> "client"
squeeze
同じ文字列が連続した場合に1つにまとめる
'Greeeen'.squeeze #=>Gren
# まとめる対象を指定することも可能
'aabbaacc'.squeeze('ab') #=> "abacc"
文字列の変換
downcase
すべてを小文字に変換
upcase
すべてを大文字に変換
swapcase
大文字と小文字を変換
capitalize
先頭の文字だけ大文字
'BIG'.downcase #=> "big"
'small'.upcase #=> "SMALL"
'BIG small'.swapcase #=> "big SMALL"
'aaa'.capitalize #=> "Aaa"
文字列の置換
sub
最初にマッチした文字列の置換
gsub
マッチした文字列すべてを置換
'静岡県 埼玉県'.sub('県', 'X') #=> "静岡X 埼玉県"
'静岡県 埼玉県'.gsub('県', 'X') #=> "静岡X 埼玉X"
# ブロックを渡すことも可能
'09-123-9'.gsub(/[0-9]/) {|str| str.to_i.succ} #=> '110-234-10"
配列への変換
指定した文字をセパレータとして分割した配列を返す
'hoge,fuga,piyo'.split(',') #=> ["hoge", "fuga", "piyo"]
# 第2引数で指定すれば分割する最大数を指定できる
'hoge,fuga,piyo'.split(',', 2) #=> ["hoge", "fuga,piyo"]
繰り返し処理
each_char
文字ごとの繰り返し
'たのし'.each_char {|c| print "#{c}ー"} #=> たーのーしー
each_line
行ごとの繰り返し
"われわれは\nかしこいので\nかしこいので".each_line {|line| puts line}
#=>
われわれは
かしこいので
かしこいので
文字列の判定
include?
指定文字列が含まれているか判定する
'super'.include?('up') #=> true
start_with?
先頭が指定文字列と同じか判定する
end_with?
末尾が指定文字列と同じか判定する
'super'.start_with?('per') # => true
'super'.end_with?('su') # => true
'super'.start_with?("str", "ing") # => true
'super'.end_with?("str", "ing") # => true
寄せる
ljust
指定した長さの文字列にselfを左寄せした文字列を返す
'ab'.ljust(1) #=> "ab"
'ab'.ljust(4) #=> "ab "
# 埋める文字を指定することも可能
'ab'.ljust(4, '*') #=> "ab**"
rjust
指定した長さの文字列にselfを左寄せした文字列を返す
'ab'.rjust(1) #=> "ab"
'ab'.rjust(4) #=> " ab"
center
指定した長さの文字列にselfを中央寄せした文字列を返す
'ab'.center(4) #=> " ab "
文字列の左右逆転
reverse
文字列を文字単位で左右逆転
'abcde'.reverse #=> "edcba"