Ruby 文字列から文字を削除するメソッドまとめ


任意の文字を削除

b-fはbからf、^c-eはcからe以外を表します。

p "abcdefg".delete("cde") #=> "abfg"

p "abcdefg".delete("b-f", "^c-e") #=> "acdeg"

str = "1234567"

str.delete!("3-5")

p str #=> "1267"


任意の文字列を削除

slice!は先頭の1ヶ所、gsubはマッチした部分をすべて削除します。

str1 = "abc:ac:abc"

str1.slice!("abc")

p str1 #=> ":ac:abc"


str2 = "123:12:123"

p str2.gsub(/123/, "") #=> ":12:"

str2.gsub!(/123/, "")

p str2 #=> ":12:"


範囲内の文字を削除

str1 = "abcdefg"

p str1.slice!(3) #=> "d"

p str1

p str1.slice!(1, 4) #=> "bcef"

p str1 #=> "ag"


str2 = "1234567"

p str2.slice!(1...4) #=> "234"

p str2 #=> "1567"


空白を削除

str = "   123   "

p str.strip #=> "123"

p str.lstrip #=> "123   "

p str.rstrip #=> "   123"


最後の文字を削除

str = "Ruby\n"

p str.chop #=> "Ruby"

p str.chop! #=> "Ruby"

str.chop!

p str #=> "Rub"


改行を削除

str = "Ruby\r\n"

p str.chomp #=> "Ruby"

str.chomp!

p str #=> "Ruby"


正規表現にしたがって削除

subは先頭の1ヶ所のみ、gsubはマッチした部分すべてを削除します。 例えば下の場合、\d+は数字の文字列を表すので連続した数字の部分が削除されます。

str = "123:456:789"

p str.sub(/\d+/, "") #=> ":456:789"

p str.gsub(/\d+/, "") #=> "::"