【C++】文字列から特定の文字を削除する方法(erase・remove活用)
この記事では、C++で文字列から特定の文字を削除する方法を解説します。C++では、標準ライブラリの erase() 関数と remove() 関数を組み合わせることで、この処理を非常に簡単に実装できます。
remove() 関数は、文字列の先頭と末尾を指すイテレータ、および削除したい文字を引数として受け取ります。ただし、remove() 単体では要素が実際に削除されるわけではなく、削除対象以外の文字を前方へ移動させるだけです。そのため、文字列から完全に取り除くには、erase() と組み合わせる「erase-remove イディオム」を使うのが定番の手法です。
入力:文字列 "ABAABACCABA" 出力:"BBCCB"
アルゴリズム
ステップ1:文字列を用意する ステップ2:remove()関数を使って、特定の文字が出現するすべての箇所を削除対象として扱う ステップ3:erase()関数で文字列から実際に削除する ステップ4:結果を出力して終了
サンプルコード
#include<iostream>
#include<algorithm>
using namespace std;
main() {
string my_str = "ABAABACCABA";
cout << "Initial string: " << my_str << endl;
my_str.erase(remove(my_str.begin(), my_str.end(), 'A'), my_str.end()); // 文字列から'A'を削除
cout << "Final string: " << my_str;
}実行結果
Initial string: ABAABACCABA Final string: BBCCB
このコードでは、remove() が「A」以外の文字を前方に詰め、続く erase() が末尾に残った不要な領域を削除します。その結果、「ABAABACCABA」からすべての「A」が取り除かれ、「BBCCB」が出力されます。このイディオムは任意の1文字だけでなく、特定の条件に一致する複数の文字を一括で削除したい場合にも応用できます。
-
Pythonで文字列から数字以外の文字を削除する方法を解説
Pythonでは、文字列から数字以外の文字(アルファベットや記号など)を取り除く方法がいくつかあります。ここでは、代表的な3つの手法を具体的なコード例とともに紹介します。 1. 内包表記とisdigit()メソッドを使う方法 最もシンプルでPythonらしい書き方は、for ... ifによる内包表記を使って数字以外の文字を除外する方法です。isdigit()メソッドは、文字が数字かどうかを判定してくれます。 >>> s = H3ll0 P30P13 >>> .join(i for i in s if i.isdigit()) 303013 このコードでは
-
Pythonで文字列から特定の文字を削除する方法【replace・正規表現・translate】
replace()メソッドで文字を削除する基本の方法Pythonの文字列(str型)には、部分文字列を別の文字列へ置き換えるためのreplace()メソッドが用意されています。削除したい文字を空文字列()に置き換えることで、その文字を取り除くことができます。>>> Hello people.replace(e, ) Hllo popl正規表現(re.sub)で複数の文字を一度に削除する1行のコードで複数種類の文字をまとめて削除したい場合は、正規表現モジュール re を使うのがおすすめです。削除したい文字を「|」(OR条件)で区切って指定し、re.sub(置換対象パターン, 置