📝

Ruby 文字列から文字を取り除く/取り出す deleteメソッド・sliceメソッド

2023/07/03に公開

今日は文字列を削除するメソッドについてまとめます。

指定した文字を取り除く deleteメソッド

deleteメソッドは引数に指定した文字を取り除いた結果を返すメソッドです。
このメソッドを使用した時、もとの文字列は保持されますが、破壊的メソッドslice!はもとの文字列自身を変更します。

irb(main):001:0> str = "abcabcabc"
=> "abcabcabc"
irb(main):002:0> str.delete("a")
=> "bcbcbc"
irb(main):003:0> str.delete("ac")
=> "bbb"
irb(main):004:0> str
=> "abcabcabc"

irb(main):005:0> str = "abcabcabc"
=> "abcabcabc"
irb(main):006:0> str.delete!("a")
=> "bcbcbc"
irb(main):007:0> str
=> "bcbcbc"

指定した位置/範囲を取り出す sliceメソッド

sliceメソッドは位置を指定して文字列を取り出すメソッドです。
こちらも破壊的メソッドslice!はもとの文字列自身を変更します。

irb(main):010:0> str = "0123456789"
=> "0123456789"
# 文字列に対して0からインデックスが振られます。引数には位置を指定します。
irb(main):002:0> str.slice(0)
=> "0"
# 引数をマイナスにすると末尾からの位置が指定できます。
irb(main):003:0> str.slice(-1)
=> "9"
# 範囲指定の使用例:インデックス3から5文字分切り取ります。
irb(main):011:0> str.slice(3, 5)
=> "34567"
irb(main):012:0> str
=> "0123456789"

irb(main):013:0> str = "0123456789"
=> "0123456789"
irb(main):014:0> str.slice!(3, 5)
=> "34567"
irb(main):015:0> str
=> "01289"

参考

https://docs.ruby-lang.org/ja/latest/method/String/i/delete.html
https://docs.ruby-lang.org/ja/latest/method/String/i/slice=21.html

配列にもdeleteメソッド、sliceメソッドあります。
https://docs.ruby-lang.org/ja/latest/method/Array/i/delete.html
https://docs.ruby-lang.org/ja/latest/method/Array/i/slice.html

Discussion