Ruby 文字列から指定した文字を削除する

  • 作成日 2020.12.05
  • 更新日 2022.02.27
  • Ruby
Ruby 文字列から指定した文字を削除する

Rubyで、deleteを使用して、文字列から指定した文字を削除するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

delete使い方

deleteを使用すれば、文字列から指定した文字を削除することが可能です。

# 文字列の値は変わらない
文字列.delete('削除する文字')

以下は、文字列から指定した文字を削除するサンプルコードとなります。

s = 'mebee'

p s.delete('e')
# "mmbmm"

p s
# "mebee"

s = 'aaabbbccc'

p s.delete('ab')
# "ccc"

p s
# "aaabbbccc"

delete!を使用すると、元の値も変更されます。

s = 'mebee'

p s.delete!('e')
# "mb"

p s
# "mb"

s = 'aaabbbccc'

p s.delete!('ab')
# "ccc"

p s
# "ccc"

また、deleteは範囲を指定して削除することも可能です。

s = 'abcdefg'

# cからeまでを削除
p s.delete('c-e')
# "abfg"

p s
# "abcdefg"

# aからeまででcからdを除いて削除
s = 'aaabbbcccdddeee'

p s.delete('a-e', "^c-d")
# "cccddd"

p s
# "aaabbbcccdddeee"

s = '12345671234567'

# 2から5までを削除
p s.delete('2-5')
# "167167"

p s
# "12345671234567"

1文字だけの削除であれば、マッチした全ての文字を指定した文字で置換できるgsubで空白を指定して削除することが可能です。
※「ab」は「a」と「b」の文字ではなく「ab」という文字列となる

s = 'mebee'

p s.gsub('e','')
# "mb"

p s
# "mb"

s = 'aaabbbccc'

p s.gsub('ab','')
# "aabbccc"

p s
# "aaabbbccc"

また、1文字だけ1つだけであれば指定したパターンにマッチした最初だけを指定した文字で置換できるsubを使用することも可能です。

s = 'abc'

p s.sub('b','')
# "ac"

p s
# "abc"

s = 'mebee'

p s.sub('e','')
# "mbee"

p s
# "mebee"

文字列「abc」から「c」だけを取り除きたい場合は、範囲を指定して文字を抽出できるsliceも使用することはk脳です。

s = 'abc'

# 
p s.slice(0,2)
# "ab"

p s
# "abc"