C++で部分文字列を別の部分文字列に置き換える方法
この記事では、C++のstd::stringクラスが提供するreplace関数を使って、文字列内の一部(部分文字列)を別の文字列に置き換える方法を解説します。replace関数は、指定した位置posから始まるlen文字分の範囲を、新しい文字列で置き換えることができます。
replace関数の基本構文
string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen);
主なパラメータの説明
- pos: 置き換えを開始する位置(挿入ポイント)です。
- len: 置き換え対象となる、削除する文字数を表します。
- str: 置き換え後の内容を持つ文字列オブジェクトです。
- subpos / sublen: strの中から部分的に取り出して使う場合の、開始位置と文字数です。
アルゴリズム
ステップ1: 元の文字列と、置き換え後の文字列、および一致させる文字列を取得する ステップ2: 一致する文字列が元の文字列内に存在する間、以下を繰り返す ステップ2.1: 該当部分を指定した文字列で置き換える ステップ3: 変更後の文字列を返す
サンプルコード
以下のコードでは、replace関数のさまざまなオーバーロード(位置指定、イテレータ指定、文字の繰り返しなど)を使用しています。
#include <iostream>
#include <string>
using namespace std;
int main () {
string base = "this is a test string.";
string str2 = "n example";
string str3 = "sample phrase";
string str4 = "useful.";
string str = base;
str.replace(9,5,str2);
str.replace(19,6,str3,7,6);
str.replace(8,10,"just a");
str.replace(8,6,"a shorty",7);
str.replace(22,1,3,'!');
str.replace(str.begin(),str.end()-3,str3);
str.replace(str.begin(),str.begin()+6,"replace");
str.replace(str.begin()+8,str.begin()+14,"is coolness",7);
str.replace(str.begin()+12,str.end()-4,4,'o');
str.replace(str.begin()+11,str.end(),str4.begin(),str4.end());
cout << str << '\n';
return 0;
}実行結果
replace is useful.
このように、replace関数は位置と長さを指定する形式だけでなく、イテレータや別の文字列の一部、同じ文字の繰り返しなど、多彩な形式で文字列の置き換えを行うことができます。用途に応じて適切なオーバーロードを選択することで、柔軟な文字列操作が可能になります。
-
C#で文字列内のすべてのスペースを「%20」に置き換える方法
文字列処理を行う際、URLエンコードなどの場面でスペースを「%20」に置き換えたいことがあります。C#では、Replace()メソッドを使うことで、この処理を簡単に実現できます。Replace()メソッドとはReplace()メソッドは、Stringクラスに用意されているメソッドで、文字列内の指定した文字や部分文字列を、別の文字列にすべて置き換えます。構文は以下のとおりです。string result = 元の文字列.Replace(置き換え対象, 置き換え後の文字列);サンプル文字列の準備まず、スペースを含むサンプル文字列を用意します。str = Hello World !;この文字列には3
-
Pythonで文字列内のすべての出現箇所を別の文字列に置換する方法
str.replace()メソッドを使う方法Pythonの文字列クラス(str)には、replaceメソッドが標準で用意されています。このメソッドは「置換したい文字列」と「置換後の文字列」を引数として受け取り、文字列オブジェクトに対して呼び出すことで、該当するすべての出現箇所を一括して置き換えることができます。たとえば、次のように呼び出すと、文字列中のすべての「no」が「yes」に置き換えられます。>>> no one knows how.replace(no, yes) yes one kyesws how >>> chihuahua.replace(hu