提供MQL4 中比较实用的两个字符串处理函数

0
回复
8071
查看
[复制链接]

53

主题

8

回帖

836

积分

管理员

积分
836
来源: 2019-11-26 23:37:23 显示全部楼层 |阅读模式
这个版本的explode 内存不是动态分配的,而且,有一些bug,请不要使用了。抱歉一个。

MQL4 在处理金融数据时候,经常要进行字符串的替换,和 csv 格式的解析。
下面是两个比较常用的函数,一个是把一个字符串转换成一个数组。一个是进行字符串替换。
比如,要解析一个csv格式的文件,可以先读出这个文件,然后,用 "\n" 进行 explode
然后,对每一行用 "," 进行explode,就完成了一个 csv的解析。
字符串替换,就更加常见了,这里就不多啰嗦了。给代码:

  1. int explode(string delimiter , string str, string &buff[])
  2. {
  3.     int start = 0, index, i = 0, delimiter_len;
  4.     delimiter_len = StringLen(delimiter);
  5.     index = StringFind(str, delimiter, start);
  6.    
  7.     while (index != -1)
  8.     {
  9.         buff[i] = StringSubstr(str, start, index - start);
  10.         start = index + delimiter_len;
  11.         index = StringFind(str, delimiter, start);
  12.         i++;
  13.     }
  14.     if (i > 0) i--;
  15.     if (index == -1) {
  16.         index = StringLen(str);
  17.         if (start < index) {
  18.             i++;
  19.             buff[i] = StringSubstr(str, start, index - start);
  20.         }
  21.     }
  22.     return (i + 1);
  23. }

  24. string str_replace(string search, string replace, string str)
  25. {
  26.     int start = 0, index, i = 0, search_len, replace_len;
  27.     search_len = StringLen(search);
  28.     replace_len = StringLen(replace);
  29.     index = StringFind(str, search, start);
  30.     while (index != -1)
  31.     {
  32.         str = StringSubstr(str, start, index) + replace + StringSubstr(str, index + search_len);
  33.         index = StringFind(str, search, index + replace_len);
  34.     }
  35.     return (str);
  36. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册
关注微信