Ruby

[Ruby]Stringクラスのメソッド

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?
末尾が指定文字列と同じか判定する
ruby
'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"