文字列の置換
文字列の置換とは、ある文字列の中に含まれている特定の文字を別の文字へ置き換えることを指します。難しそうな内容に見えますが、これから紹介する関数に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 );
引数
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関数では置換回数の指定を行うことは出来ません。置換対象の文字列が複数含まれている場合は、全ての置換対象文字列が置換されることになります。
まとめ
参考URL
StringReplace – MQL4 Reference
https://docs.mql4.com/strings/stringreplace