LoginSignup
4
1

More than 1 year has passed since last update.

【Ruby】文字列を部分的に抽出・削除するメソッドまとめ

Posted at

String#[]

文字列の範囲を指定して部分文字列を取り出す。

str = 'sample_string'
str[0] #=> "s"
str[1, 3] #=> "amp"
str[2..5] #=> "mple"

String#sliceも同様。

str = 'sample_string'
str.slice(0) #=> "s"
str.slice(1, 3) #=> "amp"
str.slice(2..5) #=> "mple"

正規表現による指定もできる。

str = 'sample_string'
str[/a.+l/] #=> "ampl"
str.slice(/a.+l/) #=> "ampl"

String#match

指定した正規表現にマッチした部分を取得する。
正規表現マッチを扱うクラス(MatchData)のインスタンスが返却される。
第二引数によりマッチの開始位置を制御できる。

str = 'sample_string'
str.match(/s(.+)e/) #=> #<MatchData "sample" 1:"ampl">
str.match(/s(.+)e/)[0] #=> "sample"
str.match(/s(.+)e/)[1] #=> "ampl"
str.match(/s./) #=> #<MatchData "sa">
str.match(/s./, 1) #=> #<MatchData "st">

String#sub

第一引数のパターンにマッチした最初の部分を第二引数の文字列で置き換える。

str = 'sample_string'
str.sub('s', 'ex') #=> "example_string"
str.sub(/s./, 'exa') #=> "example_string"

String#gsub

第一引数のパターンにマッチした部分全てを第二引数の文字列で置き換える。

str = 'sample_string'
str.gsub('s', 'ex') #=> "example_extring"
str.gsub(/s./, 'exa') #=> "example_exaring"

String#delete

引数に渡した文字を削除する。
1文字ずつ判定がかかることに注意が必要。

str = 'sample_string'
str.delete('abcdefg') #=> "smpl_strin"
str.delete('a-g') #=> "smpl_strin"
str.delete('_string') #=> "ample"

※ 特定の文字列を削除したい場合はString#subString#gsubを使って空文字に置換すれば良い。

str = 'sample_string'
str.sub('_string', '') #=> "sample"
str.gsub('_string', '') #=> "sample"
4
1
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
4
1