// функция ищет matched_text в строке text и заменяет его на replace_textstring StringReplace(string text, string matched_text, string replace_text)
{
int pos=StringFind(text,matched_text);
while(pos>=0)
{
if(pos==0) text = StringConcatenate(replace_text,StringSubstr(text,StringLen(matched_text)));
else text = StringConcatenate(StringSubstr(text,0,pos),replace_text,StringSubstr(text,pos+StringLen(matched_text)));
pos=StringFind(text,matched_text,pos+StringLen(replace_text));
}
return(text);
}
文字列の置換機能を配列で書き換えてみました。
string StrReplaceTwo(string text){
string textMod[] ={""};
string symbols1[] = {"12","15","19","13","14","16"};
string symbols2[] = {"a","b","c","d","e","f"};
string textNew="";
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1=i1+2)
{
string TwoSymbols = StringSubstr(text,i1,2);
for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==TwoSymbols) {textNew = textNew + symbols2[ i2 ] ; i2=ArraySize(symbols1) ; }
}
}
return (textNew);
}
これで、1つの文字列につき2文字を通過するようになり、例えば、文字列1215はabに置き換えられます。しかし、問題が発生しました。この関数は、文字列の文字数が奇数の場合、配列にない文字を省略し、最後の文字を省略します。文字列1214153をa14b3に置き換えるような関数に変更するのを手伝ってください。ありがとうございました。
1214153行目をa14b3に置き換えるように関数を変更したいのですが、ご教授ください。ありがとうございました。
配列の中に14がありますね、つまり "e "に置き換えられるはずですが、このロジックが理解できません。パリティをいじってもいいのですが、ゼロを足す、つまり3を03に置き換える方がいいです。
文字列の文字置換機能を配列で少し作り直しました。
ちょっとオカシクなってきたんじゃない?部分文字列の置換機能が必要な場合、このオプションを使用することができます。
最後を少しいじった、ループ機能にはすぐには気がつかなかった
配列の中に14がありますね、つまり "e "に置き換えられるはずですが、このロジックが理解できません。パリティをいじってもいいのですが、ゼロを足す、つまり3を03に置き換える方がいいです。
ちょっとオカシクなってきたんじゃない?部分文字列の置換機能が必要な場合は、このオプションを使用することができます。
リアン です。
あ、すみません、気がつきませんでした。では、a17b3の1217153とします。パリティについてですが、ゼロを足すというオプションは有効ですが、それは可能でしょうか?
ありがとうございます、でもコンパイルができません、文字列でクラッシュしてしまいます。
if(x) textNew +=StrToInteger(TwoSymbols);
とあるように、'+=' - 両方のオペランドは数値でなければならない
どうすれば直るのか?
ありがとうございます、でもコンパイルができません、文字列でクラッシュしてしまいます。
次のように宣誓します: '+=' - 両方のオペランドは数値でなければなりません。
どうすれば直るのか?
MQL4では、文字列に対して動作しません。
ありがとうございます、でもコンパイルができません、文字列でクラッシュしてしまいます。
次のようになります: '+=' - 両方のオペランドは数値であること
どうすれば直るのでしょうか?