Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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"
fkm_y
普段はRuby/Railsを触ってます。
andpad
建築施工管理者向けアプリANDPADを開発、運営するスタートアップ
https://tech.andpad.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away