// функция ищет 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);
}
现在它对每个字符串进行2个字符的处理,例如,字符串1215将被替换为ab。但我遇到了一个问题:该函数省略了不在数组中的字符,如果字符串的字符数为奇数,则省略最后一个字符。请帮助修改该函数,使字符串1214153被替换成a14b3。谢谢你!
请帮助我修改该函数,使第1214153行被替换成a14b3。谢谢你!
我不明白这个逻辑,你在数组中有14,也就是说,应该用 "e "代替。你可以在奇偶性上做文章,但最好是加零,即用03代替3。
我用数组重新设计了一下字符串字符替换功能。
我认为你变得有点古怪了。如果你需要一个子串替换功能,你可以使用这个选项。
我对结尾进行了一些调整,我没有立即注意到循环的功能
我不明白这个逻辑,你在数组中有14,也就是说,应该用 "e "代替。你可以在奇偶性上做文章,但最好是加零,即用03代替3。
我认为你变得有点古怪了。如果你需要子串替换功能,你可以使用这个选项。
利安。
哦,对不起,没有注意到,那么我们就说1217153在a17b3上,关于奇偶性--加零的选项也可以,你能做到吗?
谢谢,但我无法编译它,它在一个字符串上崩溃了。
if(x) textNew +=StrToInteger(TwoSymbols);
就像这样:'+=' - 两个操作数都是数字
我如何修复它?
谢谢,但我无法编译它,它在一个字符串上崩溃了。
这就是它所说的:'+=' - 两个操作数都是数字
我怎样才能解决这个问题?
在MQL4中,它对字符串不起作用。
谢谢,但我无法编译它,它在一个字符串上崩溃了。
它说:"+=" - 两个操作数都是数字。
我如何修复它?