更改字符大小写和修剪空格

处理文本通常意味着使用某些标准运算,诸如将所有字符转换为大写或小写,以及删除字符串开头或末尾的多余空字符(如空格)等。为此,MQL5 API 提供了四个对应的函数。所有这些函数均原位修改字符串,即直接在可用缓冲区中(如果已分配)修改。

所有函数的输入参数均是对字符串的引用,也就是说,只能为其传递变量(而不是表达式),不能传递常量变量,因为这些函数涉及修改自变量。

所有这些函数的测试脚本遵循相关说明。

bool StringToLower(string &variable)

bool StringToUpper(string &variable)

这些函数将指定字符串的所有字符转换为适当大小写:StringToLower 用于转换为小写字母,StringToUpper 用于转换为大写字母。支持在 Windows 系统层面可用的国家语言。

如果成功,其返回 true。如果出错,其返回 false

int StringTrimLeft(string &variable)

int StringTrimRight(string &variable)

该函数字符串开头(对于 StringTrimLeft)或末尾(对于 StringTrimRight)的回车 ('\r')、换行 ('\n')、空格 (' ')、制表符 ('\t') 以及一些其它不可显示字符。如果字符串内有空格(显示的字符之间),这些空格将被保留。

该函数返回移除的字符数。

StringModify.mq5 文件演示了上述函数的运算。

void OnStart()
{
   string text = "  \tAbCdE F1  ";
               // ↑        ↑  ↑
               // |        |  └2 spaces
               // |        └space
               // └2 spaces and tab
   PRT(StringToLower(text));   // 'true'
   PRT(text);                  // '  \tabcde f1  '
   PRT(StringToUpper(text));   // 'true'
   PRT(text);                  // '  \tABCDE F1  '
   PRT(StringTrimLeft(text));  // '3'
   PRT(text);                  // 'ABCDE F1  '
   PRT(StringTrimRight(text)); // '2'
   PRT(text);                  // 'ABCDE F1'
   PRT(StringTrimRight(text)); // '0'  (there is nothing else to delete)
   PRT(text);                  // 'ABCDE F1'
                               //       ↑
                               //       └the space inside remains
   
   string russian = "Russian text";
   PRT(StringToUpper(russian));  // 'true'
   PRT(russian);                 // 'RUSSIAN TEXT'  
   string german = "straßenführung";
   PRT(StringToUpper(german));   // 'true'
   PRT(german);                  // 'STRAßENFÜHRUNG'
}