LoginSignup
10
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-01-26

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"
10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5