文字列を置換したい!

文字列の置換

文字列の置換とは、ある文字列の中に含まれている特定の文字を別の文字へ置き換えることを指します。難しそうな内容に見えますが、これから紹介する関数に3つの引数を指定するだけで簡単に置換を行うことが出来ます。3つの引数をそれぞれABCとすると、Aの文字列の中にあるBの文字をCに置き換える、ということですね。

文字列を置換するStringReplace関数

文字列を置換するには、MQL4で提供されているStringReplace関数を使用します。

int StringReplace(
    string&      str,           // the string in which substrings will be replaced
    const string find,          // the searched substring
    const string replacement    // the substring that will be inserted to the found positions
);

引用元:StringReplace – MQL4 Reference

引数

str

第一引数のstrには置換の元になる文字列を指定します。ここで指定した文字列が直接置換されるため、置換前と置換後の両方の文字列を保存したい場合は、あらかじめ置換前の文字列を別の変数に格納するなどの処理が必要となります。

find

第二引数のfindには置換対象の文字列を指定します。第一引数の文字列の中に置換対象の文字列が見つからない場合は置換は行われません。

replacement

第三引数のreplacementには置換後の文字列を指定します。

戻り値

置換が行われた回数が返却されます。置換対象の文字列が見つからず置換が行われなかった場合は「0」となります。

使用例

string a = "order type is BUY.";
string b = "BUY";
string c = "SELL";
StringReplace(a, b, c);
Print(a);
実行結果
order type is SELL.

上記例では、aの文字列に含まれているbの文字列(BUY)をcの文字列(SELL)に置換しています。aの文字列の内容が直接置換されている点に注意して下さい。

日本語(マルチバイト文字)の置換

StringReplace関数は日本語をはじめとするマルチバイト文字の置換にも対応しています。マルチバイト文字からマルチバイト文字への置換はもちろん、半角英数字からマルチバイト文字への置換や、マルチバイト文字から半角英数字への置換についても問題なく行うことが可能です。

置換回数の指定

StringReplace関数では置換回数の指定を行うことは出来ません。置換対象の文字列が複数含まれている場合は、全ての置換対象文字列が置換されることになります。

まとめ

文字列を置換するにはStringReplace関数を使用する
引数は3つ(ABC)で、Aの中にあるBをCに置き換える
戻り値で置換が行われた回数が返却される
日本語(マルチバイト文字)の置換も可能
第一引数であるAの文字列の内容が直接置換される
第二引数であるBの文字列が複数含まれる場合は全てCに置換される

参考URL

StringReplace – MQL4 Reference
https://docs.mql4.com/strings/stringreplace