CAPL脚本常用字符串函数

Capl中字符串处理API

    • strlen()
    • strncat()
    • strncmp()
    • strncpy()
    • strstr()
    • str_replace()
    • substr_cpy()
    • swapWord()
    • toLower()
    • toUpper()

Capl中字符串处理API

strlen()

字符串的长度
在这里插入图片描述

On key 'c'
{char buffer[100] = "CANalyzer";Write("strlen:%d",strlen(buffer));Write("elCount:%d",elCount(buffer));
}
  • strlen 结果是实际的字符串长度
  • elCount 结果是数组的定义长度

输出:
strlen:9
elCount:100

strncat()

将源字符串拼接到到目的字符串后面,注意“\0”也占用一个字节。
在这里插入图片描述

On key 'c'
{int i ;char s[10];for(i=0;i<12;i++){strncpy(s, "12345", 10); // 初始化字符串数组 s = "12345"strncat(s, "7890", i); //  根据指定长度参数拼接 字符串write("i = %d  s = %s",i,s);}
}

输出:
i = 0 s =
i = 1 s =
i = 2 s = 1
i = 3 s = 12
i = 4 s = 123
i = 5 s = 1234
i = 6 s = 12345
i = 7 s = 123457
i = 8 s = 1234578
i = 9 s = 12345789
i = 10 s = 123457890
i = 11 s = 123457890
从输出可以看出,指定的长度参数可以大于将输出的字符串长度正常显示,小于的话,从前往后截取。

strncmp()

字符串数组比较
在这里插入图片描述

On key 'c'
{char s1[8] = "123456";char s2[8] = "223456";char s3[8] = "1234561";char s4[8] = "12345";char s5[8] = "123456";write("s1:s2 = %d",strncmp(s1,s2,100));write("s1:s3 = %d",strncmp(s1,s3,100));write("s1:s4 = %d",strncmp(s1,s4,100));write("s1:s5 = %d",strncmp(s1,s5,100));
}

输出:
s1:s2 = -1
s1:s3 = -1
s1:s4 = 1
s1:s5 = 0
函数的机制是:逐个字符比较,遇见不同的字符,比较其ASCII值,然后返回值。

long strncmp_off(char s1[], long s1offset, char s2[], long s2offset, long len);
相比strncmp ,strncmp_off 多了个offset参数
在这里插入图片描述


On key 'c'
{char s1[8] = "123456";char s2[8] = "456";write("s1:s2 = %d",strncmp_off(s1,3,s2,0,100));//s1[3:结束]和S2比较
}

输出:
s1:s2 = 0

strncpy()

把源字符串拷贝到目的字符串数组,拷贝长度由len参数决定,拷贝过程会覆盖目的字符串数组原来内容。
在这里插入图片描述

On key 'c'
{char s1[20] = "123456";char s2[8] = "789";strncpy(s1,s2,elCount(s1));write("s1 = %s",s1);//清空字符串strncpy(s1,"",elCount(s1));write("s1 = %s",s1);
}

输出:
s1 = 789
s1 =

void strncpy_off(char dest[], long destOffset, char src[], long max);
相当于 strncpy 和 strncat 的结合
在这里插入图片描述

On key 'c'
{int i;
char s1[20] = "123456";
char s2[8] = "789";for(i=0;i<strlen(s1) + 1;i++)  //strlen(s1) + 1 = 6{   strncpy_off(s1,i,s2,elCount(s1)); //根据offset 参数拷贝S2到S1write("s1 = %s",s1);//初始化s1字符串数组strncpy(s1,"123456",elCount(s1));}
}

输出:
s1 = 789 //i=0
s1 = 1789 //i=1
s1 = 12789
s1 = 123789
s1 = 1234789
s1 = 12345789
s1 = 123456789 //i=5

strstr()

搜索字符串,搜索到结果返回索引的位置。搜索到第一个匹配结束。
在这里插入图片描述

On key 'c'
{long pos;char s1[18] = "hello world";char s2[11] = "world";write("pos:%d",strstr(s1, s2));write("pos:%d",strstr(s1, "l"));
}

输出:
pos:6

pos:2

long strstr_off(char s1[], long offset, char s2[]);
规定被搜索的字符串数组位置。

On key 'c'
{long pos,i;char s1[18] = "hello world";char s2[11] = "world";for(i=0;i<strlen(s1)+1 ;i++){write("pos:%d",strstr_off(s1, i,"l"));}}

输出:
pos:2
pos:2
pos:2
pos:3
pos:9
pos:9
pos:9
pos:9
pos:9
pos:9
pos:-1
pos:-1

str_replace()

搜索并替代字符串

在这里插入图片描述

On key 'c'
{long pos,i;char s1[18] = "12121212";char s2[11] = "world";str_replace(s1, "1", "3");write("s1:%s",s1);
}

输出:
s1:32323232

long str_replace(char s[], long startoffset, char replacement[], long length); // form 2
用另一个字符串替代被搜索的字符串的一部分,注意期望的结果字符串数组大小不能大于被搜索的字符串数组

On key 'c'
{long pos,i;char s1[18] = "12345678";str_replace(s1,4, "asdfg",strlen(s1));//form2 ,从索引4后面的字符串被"asdfg"替代write("s1:%s",s1);
}

输出:
s1:1234asdfg

substr_cpy()

拷贝源字符串的子字符串到目的字符串
在这里插入图片描述

On key 'c'
{
long pos,i;
char s1[18];
char s2[18] = "12345678";
for(i=0;i<5;i++)
{
substr_cpy(s1, s2, i, 4, elcount(s1)); 
write("s1:%s",s1);
}

输出:
s1:1234
s1:2345
s1:3456
s1:4567
s1:5678

void substr_cpy_off(char dest[], long destOffset, char src[], long srcStart, long len, long max)
拷贝源字符串的子字符串到目的字符串,相当于把源字符串的子字符串和目的子字符串 拼接在一起
在这里插入图片描述


On key 'c'
{long pos,i;char s1[18] = "abcdefg";char s2[18] = "12345678";for(i=0;i<5;i++){substr_cpy_off(s1,i, s2, i, 4, elcount(s1)); write("s1:%s",s1);strncpy(s1,"abcdefg",elCount(s1));
}

输出:
s1:1234
s1:a2345
s1:ab3456
s1:abc4567
s1:abcd5678

swapWord()

高低位切换
在这里插入图片描述


On key 'c'
{write("Word:%x",swapWord(0x1234));write("int:%x",swapInt(0x1234));write("dword :%lx",swapDWord(0x12345678));write("long :%lx",swapLong(0x12345678));write("int64 :%I64x",swapInt64(0x1234567890876543LL));// 8个字节的整形,后面必须有"LL"后缀write("qword :%I64x",swapQWord(0x1234567890876543LL));
}

输出:
Word:3412
int:3412
dword :78563412
long :78563412
int64 :4365879078563412
qword :4365879078563412

toLower()

将输入字符或者字符串转换成小写
在这里插入图片描述

On key 'c'
{char s[20];write("s :%c",toLower('A'));  // form1  ,转换单个字符toLower(s, "aSdFgH", elcount(s)); // form2 ,转换字符串write("s :%s",s);
}

输出:
s :a
s :asdfgh

toUpper()

将输入字符或者字符串转换成大写,用法参考 toLower


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部