文字列から指定の文字を削除する

文字列の中から指定した文字を削除することができます。削除したあとの文字列を新しい文字列として返す方法と、元の文字列そのものから削除するする方法が用意されています。ここでは Ruby で文字列から指定した文字を削除する方法について解説します。

(2022 年 10 月 13 日公開 / 2022 年 10 月 26 日更新)

文字列から指定の文字を削除する

文字列の中から指定した文字を削除する方法です。 String クラスで用意されている delete メソッドを使います。

delete(*strs)

引数に指定した文字が含まれていた場合はすべて削除して、結果として新しい文字列を返します。例えば引数に "A" と指定した場合は "A" という文字がすべて削除されますが、 "AB" と指定した場合は "A" と "B" の 2 つの文字がすべて削除されます。 "AB" という文字列が削除されるわけではないので注意してください。

具体的には次のように記述します。

str = "ABCDE"
puts(str.delete("BD"))  # ACE

上記の場合は "B" と "D" の文字が対象の文字列から削除された新しい文字列を返します。

なお delete メソッドではなく String クラスの delete! メソッドを使った場合は、指定した文字を削除した新しい文字列として返すのではなく、元の文字列から文字を削除します。

delete!(*strs)

具体的には次のように記述します。

str = "ABCDE"
puts(str)  # ABCDE

str.delete!("BD")
puts(str)  # ACE

今回は元の文字列そのものから指定した文字を削除しています。

範囲指定と否定を使った指定方法

delete メソッドと delete! メソッドではどちらも削除する文字を指定するときに範囲指定と否定を利用することができます。

削除する文字を範囲で指定する場合は - を使用します。 例えば削除する文字として "A-G" のように指定すると "ABCDEFG" と指定した場合と同じになります。

具体的には次のように記述します。

str = "A7B62C8E"
puts(str.delete("0-9"))  # ABCE

上記は対象の文字列から "0" から "9" までの数値の文字をすべて削除した新しい文字列を取得します。

また削除する文字を範囲で指定した場合に、その中から除外する部分がある場合は ^ を使用します。 例えば削除する文字として "A-Z" のように指定すると "A" から "Z" までのすべての文字が削除されますが、 2 番目の引数に "^F-O" のように指定すると "A" から "Z" までの中で "F" から "O" までの文字は除外されます。

具体的には次のように記述します。

str = "A7B62C8E"
puts(str.delete("0-9","^2-5"))  # AB2CE

上記は対象の文字列から "0" から "9" までの数値の文字の中から "2" から "5" までを除外したすべて削除した新しい文字列を取得します。なお今回の例のように delete メソッドに複数の引数を指定した場合は、すべての引数に一致する文字だけが削除されます。

このように -^ は特別な意味を持つため、この 2 つの文字を単なる文字として指定したい場合には \-\^ のようにエスケープして記述してください。 \ も同様に文字として指定したい場合は \\ と記述してください。

サンプルコード

では簡単なサンプルで試してみます。

# encoding: UTF-8

str = "Top_Borer_Color is Red"
puts("対象の文字列:" + str)

newStr = str.delete(" _")
puts("空白とアンダーバーを削除:" + newStr)

実行結果は次のようになります。

指定した部分文字列を削除する

-- --

Ruby で文字列から指定した文字を削除する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。