赞
踩
字符串处理相关的函数,顾名思义就是针对字符串数据的一些处理,如大小写转换,复制剪切插入,查找子字符串,编码转换等等。
这些函数如下所示,共有28个
StringToLower, StringToUpper, StringToReverse
StringTrimLeft, StringTrimRight
StringCat, StringInsert,StringCopy, StringMid
StringExcluding, StringIncluding
StringFind, StringFindOneOf,StringReverseFind
StringCompare, StringCompareNoCase
StringGet,StringGetEx,
StringLength
StringSet,StringSetEx
String2Unicode, Utf82Unicode ,Unicode2Utf8
UnicodeCat,UnicodeCopy, UnicodeCompare, UnicodeExcluding
函数用于将指定字符串转换为小写形式,要注意接收转换结果的字符数组要有足够的空间,不然函数执行失败。
macro_command main()
char source[5]="aBCdE", result[5]
bool rst
//函数将指定的字符串转换为小写形式,结果result="abcde"
rst = StringToLower("aBCdE", result[0])
//也可以传递字符元素,表示转换索引0开始的全部字符
rst = StringToLower(source[0], result[0])
if rst == true then
SetData(result[0], "Local HMI", LW, 0, 5)
end if
end macro_command
函数将指定字符串转换为大写形式,一样要注意的存储转换结果的字符数组空间要足够大,不然函数执行失败。
macro_command main()
char source[5]="aBCdE", result[5]
bool rst
//函数将指定的字符串转换为大写形式,结果result="ABCDE"
rst = StringToUpper("aBCdE",result[0])
//也可以传递字符元素,表示转换索引0开始的全部字符
rst = StringToUpper(source[0], result[0])
if rst == true then
SetData(result[0], "Local HMI", LW, 0, 5)
end if
end macro_command
此函数用于将指定字符串的内容进行反向重新排序,例如“1234”,重新排序后变成“4321”
macro_command main()
char source[5]="aBCdE", result[5]
bool rst
//函数将指定的字符串顺序反向重排,结果result="EdCBa"
rst = StringToReverse("aBCdE",result[0])
//也可以传递字符元素,表示转换索引0开始的全部字符
rst = StringToReverse(source[0], result[0])
if rst == true then
SetData(result[0], "Local HMI", LW, 0, 5)
end if
end macro_command
用于从左边或右边删除最左边或最右边指定的字符串。
例如StringTrimLeft(“1234”,“”, result[0])
最左边是“*”则删除,不是则原样输出,结果result=“1234”
macro_command main()
char source[12]=",.*aBCdE,.*", set[3]=",",result[12]
bool rst
//判断source[12]=",.*aBCdE,.*"最左边是否为set[3]=",",是则删除,结果保存到result
//执行结果为result=".*aBCdE,.*" .要注意result要能足够容纳结果,不然函数执行失败。
//rst = StringTrimLeft(source[0], set[0], result[0])
//也可以使用这一种形式去除最左边字符串,结果result="aBCdE,.*"
//rst = StringTrimLeft(",.*aBCdE,.*", ",.*", result[0])
//有从左边去除,对应就有从右边去除,结果result=",.*aBCdE"
rst =StringTrimRight(source[0], ",.*", result[0])
if rst==true then
SetData(result[0], "Local HMI", LW, 0, 12)
end if
end macro_command
用于在指定字符串尾部添加新的字符串
macro_command main()
char source[12]="abc", set[3]="123",result[20]="123"
bool rst
//result=”123abc”
rst =StringCat(source[0], result[0])
if rst==true then
SetData(result[0], "Local HMI", LW, 0, 12)
end if
end macro_command
用于的一字符串指定的位置插入另一字符串,索引的位置从0开始计数
例如char source[12]=“abc”, result[20]=“123” StringInsert(1,source[0],result[0]),程序会在字符串result[20]="123"的1位置,也就是在“1“的后面插入source[12]=“abc”,执行后result[20]=“1 abc23”
macro_command main()
char source[12]="abc", set[3]="123",result[20]="123"
bool rst
//result="1abc23"
rst = StringInsert(1,source[0],result[0])
if rst==true then
SetData(result[0], "Local HMI", LW, 0, 12)
end if
end macro_command
用于实现两个字符串间的复制
macro_command main()
char source[12]="abc", set[3]="123",result[20]="123"
bool rst
//执行结果result="abc"
rst = StringCopy(source[0],result[0])
if rst==true then
SetData(result[0], "Local HMI", LW, 0, 12)
end if
end macro_command
用于将一字符串内的子字符串提取出来
macro_command main()
char source[12]="abc", set[3]="123",result[20]
bool rst
//执行结果result="b"
rst = StringMid(source[1], 1, result[0])
if rst==true then
SetData(result[0], "Local HMI", LW, 0, 12)
end if
end macro_command
在一字符串中从左查找另一指定字符串不包含的字符,包含时结束查找,并返回查找结果
例如char source[12]=“abcdefg”, set[3]=“bc”,result[20]=“”
StringExcluding(source[0], set[0], result[0])
从左开始在字符串"abcdefg"中找到第一个“b”包含在“bc”字符串中,结束查找,返回”b”前面的所有内容“a”.
macro_command main()
char source[12]="abcdefg", set[3]="bc",result[20]=""
bool rst
//执行结果result="b"
rst = StringExcluding(source[0], set[0], result[0])
if rst==true then
SetData(result[0], "Local HMI", LW, 0, 12)
end if
end macro_command
此函数在一字符串中从左查找另一指定字符串所包含的字符,不包含时结束查找,并返回查找结果
macro_command main()
char source[12]="AABBCDEFG", set[3]="AB",result[20]=""
bool rst
//执行结果result="AABB"
rst = StringIncluding(source[0], set[0], result[0])
if rst==true then
SetData(result[0], "Local HMI", LW, 0, 12)
end if
end macro_command
这两函数用于在一字符串中,从左向右,或从右向左查找指定的字符串
char source[12]=“abcdefg”, set[3]=“bc”,result[20]=“”
int pos pos =StringFind(source[0], set[0])
在字符串"abcdefg"中查找"bc",可以找到“bc“,索引为1,所以pos=1.
如果找不到返回-1.
macro_command main()
char source[12]="abcdefg", set[3]="hi",result[20]=""
int pos
//从右向左查找,结果POS=-1
//pos =StringReverseFind(source[0], set[0])
//从左向右查找,结果pos=-1
pos =StringFind(source[0], set[0])
DEC2ASCII(pos, result[0], 4)
SetData(result[0], "Local HMI", LW, 0, 12)
end macro_command
在一字符串中从左到右查找指定字符串,有一字符在指定字符串中包含,则停止查找,返回字符索引
macro_command main()
char source[12]="abcdefg", set[3]="hdi",result[20]=""
int pos
pos =StringFindOneOf(source[0], set[0])
//结果pos=3
DEC2ASCII(pos, result[0], 4)
SetData(result[0], "Local HMI", LW, 0, 12)
end macro_command
用于对比两字符串,相同返回true,不相同返回false
StringCompare比对时区分大小写,
StringCompairNoCase则不分大小写。
macro_command main()
char source[12]="abcdefg", set[3]="hdi",result[20]=""
bool rst
//执行结果 rst=false,
rst = StringCompare(source[0], set[0])
//结果rst=true
//rst = StringCompare("hdi", "hdi")
DEC2ASCII(rst, result[0], 4)
SetData(result[0], "Local HMI", LW, 0, 12)
end macro_command
用于获取触摸屏或PLC等指定寄存器的字符串
StringGetEx和StringGet相似,只不在执行时不会等待硬件回应,直接执行剩余代码。
我们知道硬件在通讯时会有延时现象,导致程序宏执行卡顿,所以使用这个函数可以避免程序延时
macro_command main()
char source[12]="abcdefg", set[3]="hdi",result[20]="123"
bool rst
//LW 9120为系统预留编程软件版本号
StringGet(result[0], "Local HMI", LW, 9120, 4)
//StringGetEx(result[0], "Local HMI", LW, 10884, 2)
end macro_command
获取指定字符数据的字符个数
macro_command main()
char source[12]="abcdefg", set[3]="hdi",result[20]="123"
int nLength
//"abcdefg"有7个字符,所以nLength=7
nLength =StringLength(source[0])
DEC2ASCII(nLength, result[0], 4)
SetData(result[0], "Local HMI", LW, 0, 4)
end macro_command
向硬件写入字符串
另外函数StringSetEx是StringSet扩展,用法都一样,只是不会通讯硬件响应,径直执行函数后面的代码
macro_command main()
char source[12]="abcdefg", set[3]="hdi",result[20]
//在前面添加的数值元件显示出字符串。
StringSet(source[0], "Local HMI", LW, 0, 12)
end macro_command
前面我们使用的字符都可以在ASCII表查找到,但世界语言很多,ASCII表不能够表示全部语言,所以就从ASCII基础上扩展出了UNICODE,UNICODE可以表示世界上的全部语言。
这两种编码字符间可以相互转换使用。
另外还有一个UTF-8编码,全称是8-bit Unicode Transformation Format,
是一种针对Unicode的可变长度字符编码。
也可以和Unicode进行相互转换。
在使用这三个函数前,我们在界面添加一个字符显示元件,
如下图设置让其能显示出UNICODE编码字符。
String2Unicode(“工控编程,欢迎您”, result[0])
将字符串常量转换为UNICODE形式,保存到result字符数组中
执行下面宏,可以在界面的字符元件上显示出中文。
macro_command main()
char result[20]
String2Unicode("工控编程,欢迎您", result[0])
StringSet(result[0], "Local HMI", LW, 0, 20)
end macro_command
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。