跳到主要内容

15.4.15 字符串操作

15.4.15.1 StrFind

说明: StrFind 用于在字符串中查找,从一个特定位置开始查找属于另一个特定字符集合的位置。

定义:

StrFind(Str, ChPos, Set [\NotInSet]);
  • Str:数据类型 string,表示要查找的字符串。

  • ChPos:数据类型 int,表示开始查找的位置,从 1 开始。如果位置越界,报错提示。

  • Set:数据类型 string,表示要匹配的字符集合。

  • [\NotInSet]:标识符,标识搜索不在匹配的字符集合内的字符。

  • 返回值:数据类型 int,表示执行查找得到的第一个字符匹配的位置。如果没有找到,返回字符串长度+1。

示例:

VAR int found;
found = StrFind(“Robotics”, 1, “aeiou”); //2
// 从第 1 个字符“R”开始匹配,发现第 2 个字符“o”在字符集合“aeiou”,返回匹配位置 2。
found = StrFind(“Robotics”, 1, “aeiou” \NotInSet); //1
// 从第 1 个字符“R”开始匹配,发现第 1 个字符“R”不在字符集合“aeiou“,返回匹配位置 1。

15.4.15.2 StrLen

说明: StrLen 用于获取字符串长度。

定义:

StrLen(Str);
  • Str:数据类型:string,表示要计算字符个数的字符串。

  • 返回值:数据类型 int,表示当前字符串长度,>=0。

示例:

VAR int num;
num = StrLen(“Robotics”); //8
// 字符串“Robotics“长度为 8。

15.4.15.3 StrMap

说明: StrMap 用于创造一份 string 备份,它其中所有字符都将按照指定映射关系进行替换。映射字符根据位置一一对应,没有映射的字符保持不变。

定义:

StrMap(Str, FromMap, ToMap);
  • Str:数据类型 string,表示原字符串。

  • FromMap:数据类型 string,表示映射的索引部分。

  • ToMap:数据类型 string,表示映射的值部分。

  • 返回值:数据类型 string,表示替换得到的字符串。

示例:

VAR string str;
str = StrMap(“Robotics”, “aeiou”, “AEIOU”) //RObOtIcs;
// 对字符串“Robotics“进行字符映射,”aeiou”分别映射成”AEIOU“。

使用限制:FromMap 和 ToMap 必须匹配,长度一致。

15.4.15.4 StrMatch

说明: StrMatch 用于在字符串中搜索,从指定位置开始,搜索特定格式或字符串,返回匹配的位置。

定义:

StrMatch(Str, ChPos, Pattern);
  • Str:数据类型: string,表示要搜索的字符串。

  • ChPos:数据类型: int,表示起始位置,如果超出字符串长度范围报错。

  • Pattern:数据类型 string,表示要匹配的格式字符串。

  • 返回值:数据类型 int,表示匹配字符串首字符所在的位置,如果没有匹配,则返回字符串长度+1。

示例:

VAR int found;
Found = StrMatch(“Robotics”, 1, “bo”) //3;
// 从第 1 个字符开始搜索“bo“,发现第 3 个位置匹配,返回匹配的首字符所在位置 3。

15.4.15.5 StrMemb

说明: StrMemb 用于检查字符串中某个字符是否属于指定的字符集合。

定义:

StrMemb(Str, ChPos, Set);
  • Str:数据类型:string,表示要检查的字符串。

  • ChPos:数据类型:int,表示要检查的字符位置,超出字符串范围报错。

  • Set:数据类型:string,表示要匹配的字符集合。

  • 返回值:数据类型 bool,true 表示字符串中指定位置的字符属于指定的字符集合,否则 false。

示例:

VAR bool memb;
memb = StrMemb(“Robotics”, 2, “aeiou”) //true;
// 第 2 个字符 o 属于字符集合“aeiou”中一员,返回 true。

15.4.15.6 StrOrder

说明: StrOrder 用于比较两个字符串,并且返回布尔值。

定义:

StrOrder(Str1, Str2);
  • Str1:数据类型:string,表示第一个字符串值。

  • Str2:数据类型:string,表示第二个字符串值。

  • 返回值: 数据类型 bool,当 str1 ⇐ str2 时返回 true,否则 false。

示例:

VAR bool le;
le = StrOrder(“FIRST”, “SECOND”); //true;
le = StrOrder(“FIRSTB”, “FIRST”); //false

15.4.15.7 StrPart

说明: StrPart 用于截取字符串一部分生成一个新的字符串。

定义:

StrPart(Str, ChPos, Len);
  • Str:数据类型:string,表示要被截取的原字符串。

  • ChPos:数据类型 int,表示起始截取位置,当超出字符串范围时报错。

  • Len:数据类型 int,表示要截取的长度。

  • 返回值:数据类型 string,表示截取得到的字符串,从指定位置开始截取指定长度的字符串。

示例:

VAR string part;
part = StrPart(“Robotics”, 1, 5); //Robot
// 从第 1 个位置开始截取长度为 5 的字符串,得到“Robot“。

15.4.15.8 StrSplit

说明: StrSplit 可以对字符串进行分割,通过指定分隔符,将字符串分割成字符串数组。

定义:

StrSplit(Str [, separator]);
  • Str:数据类型 string,表示要被分割的原字符串。

  • Separator:数据类型 string,分隔符,该字符串中的所有字符都被看做分隔符,可以缺省,当缺省时,空格作为默认分隔符。

  • 返回值:数据类型 string 数组,表示分割得到的字符串数组。

示例:

string str_arr[4] = StrSplit("test1,test2;test3\test4", "\,;");
// 字符串分割结果为四个子串(test1 test2 test3 test4)。

使用限制:

  • 输入字符串为空时会报错。

  • 分割结果和定义字符串的长度不匹配时会报错。

15.4.15.9 StrToByte

说明: StrToByte 可以将字符串转换为 byte 类型数据。

定义:

StrToByte(Str, [trans]);
  • Str:数据类型 string,将要进行数据转换的字符串。

  • trans:数据类型枚举,表示字符串的数学进制格式,可用参数为 \Bin(二进制)、\Okt(八进制)、\Hex(十六进制)、\Char(字符)以及默认参数(无参数,十进制)。

  • 返回值:数据类型:byte,字符串的转换结果。

示例:

例1

Byte NumBin = StrToByte(“10”, \Bin);
Byte NumOkt = StrToByte(“10”, \Okt);
Byte NumBin = StrToByte(“10”);
Byte NumHex = StrToByte(“10”, \Hex);
// 依次将字符串 “10” 按照二进制、八进制、十进制、16 进制转换为 byte 数字,结果依次为 2, 8,10, 16。

例2

Byte NumChar = StrToByte(“0”, \Char);
// 将字符”0”按照字符与 ASCII 的转换关系,转为 48。

使用限制:

  • 输入字符串不符合指定的数据格式时会报错。

15.4.15.10 StrToDouble

说明: StrToDouble 可以将字符串转换为 double 类型数据。

定义:

StrToDouble(Str);
  • Str:数据类型:string,将要进行数据转换的字符串。

  • 返回值:数据类型:double,字符串的转换结果。

示例:

Double NumDouble = StrToDouble(“3.1415926”);
// 将“3.1415926”字符串转换为 double 类型数据。

使用限制:

  • 输入字符串不符合指定的数据格式时会报错。

15.4.15.11 StrToInt

说明: StrToInt 可以将字符串转换为 Int 类型数据。

定义:

StrToInt(Str);
  • Str:数据类型:string,将要进行数据转换的字符串。

  • 返回值:数据类型:Int,字符串的转换结果。

示例:

Int NumInt = StrToInt(“99”);
// 将“99”字符串转换为 Int 类型数据。

使用限制:

  • 输入字符串不符合指定的数据格式时会报错。

15.4.15.12 StrToDoubleArray

说明: 可以对大量 double 字符串进行类型转换,转换成 double 数组数据。

定义:

StrToDoubleArray(output, input, spilit);
  • output:数据类型 double 数组,转换结果输出。

  • input:数据类型 str 字符串,输入的字符串。

  • spilit:数据类型 str 字符串,字符串的分隔符。

  • 返回值:数据类型 int,转换是否遇到异常,-1 错误,0 正常。

示例:

string tmp_ss = "1,2,3,4,5,6,7";
double db_arr[10];
StrToDoubleArray (db_arr, tmp_ss, ",");
// 结果 db_arr = {1,2,3,4,5,6,7,0,0,0}

使用限制:

  • 字符串允许结尾出现一个多余的结束符。

  • 转换失败或含非法字符报错“输入的字符串分割后不是 Double 形式”。

  • double 数组应大于等于字符串中数据量的大小,否则报错 “输入的数组大小不足 或者 数组不是一维数组。