Vector - CAPL - 字符串复制与替换函数

         在开发脚本过程中,经常会涉及到字符串的复制与替换处理,相较于C语言,CAPL中做了些许改动,并提供了一些范例供我们学习,方便我们更加快速的去完成脚本开发。下面介绍的主要是字符串的复制与替换,我们使用的时候只需要按照范例进行修改即可。

Vector - CAPL - 字符串复制与替换函数_第1张图片

目录

复制字符串

mbstrncpy & mbstrncpy_off

代码示例

mbsubstr_cpy & mbsubstr_cpy_off

代码示例

strncpy

代码示例

strncpy_off

代码示例

substr_cpy

代码示例

substr_cpy_off

代码示例

strncat

代码示例

snprintf

代码示例

str_replace

代码示例

str_replace_regex

代码示例

复制字符串

mbstrncpy & mbstrncpy_off

功能:将字符串复制到另一个字符串;

说明:

mbstrncpy函数将src复制到dest。len表示应复制的字符数;使用-1表示应尽可能多地复制到dest中(最多复制到src结尾)。该函数确保有一个终止的0字节;但与strncpy不同的是,该字节不计入len。

mbstrncpy_off函数覆盖目标缓冲区中从字符偏移destOffset开始的字符。

dest:要存入的字符串buffer

src:被复制的字符串buffer

len:要复制的字符数,或-1以尽可能多地复制

destOffset:复制的字符串放在destOffset之后

代码示例

char s1[50] = "eine grüne "; 
char s2[10] = "Türen"; 
mbstrncpy_off(s1, 11, s2, 3);
write("%s", s1); 
//输出结果
// german for 'a green'
// german for 'doors'
// eine grüne Tür 

mbsubstr_cpy & mbsubstr_cpy_off

Vector - CAPL - 字符串复制与替换函数_第2张图片

功能:将子字符串复制到另一个字符串

说明:

mbsubsrt_cpy将src的子字符串复制到dest。len表示应复制的字符数;使用-1表示应尽可能多地复制到dest中(最多复制到src结尾)。该函数确保有一个终止的0字节;但与substracpy/substracpy_off不同,该字节不计入len。

mbsubst_cpy_off覆盖目标缓冲区中从字符偏移destOffset开始的字符。

dest:要存入的字符串buffer

src:被复制的字符串buffer

len:要复制的字符数,或-1以尽可能多地复制

srcStart:在子字符串的src中以字符开始索引

destOffset:目标缓冲区中的字符偏移量

代码示例

char s1[50] = "eine grüne "; 
char s2[20] = "schöne Türen"; 
mbsubstr_cpy_off(s1, 11, s2, 7, 3);
write("%s", s1); 
//输出结果
// german for 'a green'
// german for 'beautiful doors'
// eine grüne Tür (german for 'a green door')

strncpy

功能:将一个字符串复制到另一个字符串;此函数将src复制到dest,max表示dest的大小(以字节为单位)。该函数确保存在终止“\0”;最多复制max-1个字节。

注意:根据字符串编码,字符可能需要几个字节,例如Windows ANSI(932)编码中的日语字符或UTF-8编码中的任何特殊字符,在这种情况下,最好使用函数mbstrncpy。

dest:要存入的字符串buffer

src:被复制的字符串buffer

max:

最大复制字节数。

不能大于dest的大小。

最多复制max-1个字节。

如果src长度小于dest,则复制字节直到遇到终止的“\0”。

代码示例

variables {
   char s1[7] = "Vector";
   char s2 [32];
}
on key 'z'
{ 
   strncpy (s2,s1,elcount(s2));
   write ("Result: %s",s2);       
}
//输出结果
//Result: Vector

strncpy_off

功能:将一个字符串复制到另一个字符串;

说明:将src复制到dest。max表示dest的大小(以字节为单位);该函数确保存在终止“\0”,最多复制max-1-destOffset字节;从destOffset开始,在dest中覆盖字节。

dest:要存入的字符串buffer

destOffset:目标缓冲区中的偏移量

src:被复制的字符串buffer

max:

用于确定复制的最大字节数。

不能大于dest的大小。最多复制max-1-destOffset字节。

如果src长度小于dest,则复制字节直到遇到终止的“\0”。

代码示例

char s[6] = "Hello";
strncpy_off(s, 1, "e", elcount(s)); 
//输出结果
// s: He

substr_cpy

功能:将一个字符串复制到另一个字符串;此函数将src的子字符串复制到dest。max表示dest的大小(以字节为单位)。该函数确保存在终止“\0”。因此,最多复制max-1个字节。

注意:根据字符串编码,字符可能需要几个字节,例如Windows ANSI(932)编码中的日语字符或UTF-8编码中的任何特殊字符,在这种情况下,最好使用函数mbsubstr_cpy。

dest:要存入的字符串buffer

src:被复制的字符串buffer

srcStart:子字符串src中的起始索引未知

len:子字符串的长度(以字节为单位),或-1复制字符串直到结尾

max:目标字符串大小

代码示例

char s1[7];
char s2[18] = "Vector Informatik";
substr_cpy(s1, s2, 0, 6, elcount(s1)); 
//输出结果
// s1: Vector

substr_cpy_off

功能:将一个字符串复制到另一个字符串;此函数将src的子字符串复制到dest。max表示dest的大小(以字节为单位)。该函数确保存在终止“\0”。因此,最多复制max-1-destOffset字节。

注意:根据字符串编码,字符可能需要几个字节,例如Windows ANSI(932)编码中的日语字符或UTF-8编码中的任何特殊字符,在这种情况下,最好使用函数mbsubstr_cpy_off。

dest:要存入的字符串buffer

destOffset:将字符串复制到dest中的起始字节

src:被复制的字符串buffer

srcStart:子字符串src中的起始索引未知

len:子字符串的长度(以字节为单位),或-1复制字符串直到结尾

max:目标字符串大小

代码示例

char s1[9] = "New CAPL";
char s2[18] = "Vector Informatik";
substr_cpy_off(s2, 7, s1, 4, -1, elcount(s2)); 
write("s2: %s", s2);
//输出结果
//s2: Vector CAPL

strncat

功能:将源字符串复制并放在目标字符串中已有字符后;此函数将src附加到dest。len表示复合字符串的最大长度。该函数确保存在终止“\0”。因此,最多复制len-strlen(dest)-1个字符。

注意:跟c语言中的strncat不同,len表示复合字符串的最大长度,包括终止的“\0”,而不是要附加的字符数。

dest:要存入的字符串buffer

src:被复制的字符串buffer

len:复合字符串的最大长度,包括终止“\0”。

代码示例

char s[20];
strncpy(s, "Vector", 10); 
write("s is %s", s);
strncat(s, " CANoe", 19); 
write("s is %s", s);
strncpy(s, "Vector", 10); 
write("s is %s", s);
strncat(s, " CANoe", 11); 
write("s is %s", s);
//输出结果
// s is "Vector"
// s is "Vector CANoe"
// s is "Vector"
// s is "Vector CAN"

snprintf

功能:将格式化字符串打印到字符数组,此函数对应于C函数sprintf。作为补充,参数len表示数组dest的最大长度。

注意:CAPL支持最多64个参数的函数调用。

dest:要打印到的字符缓冲区。

len:打印到缓冲区的最大字符数,包括终止“\0”,必须最多为缓冲区的大小。

format:打印到缓冲区的格式化字符串。

代码示例

char buffer[100], str[7] = "Vector";
long i;
i = snprintf(buffer,elcount(buffer),"String: %s\n", str);
write("Output:\n%s : Character count = %d\n", buffer, i);

str_replace

Vector - CAPL - 字符串复制与替换函数_第3张图片

功能:用另一个字符串替换字符串中出现的所有文本;用另一个字符串替换字符串的一部分。

s:被修改的字符串

searched:应替换的字符串

startoffset:s中的起始替换位置

replacement:替换原始字符的字符串

length:要替换的最大字符数

返回值:

1:如果替换成功则返回1

0:如果生成的字符串对于s缓冲区太长,则为0。

代码示例

char buffer[70] = "Vector Informatik";
str_replace(buffer, "Informatik", "CANoe");
write(buffer);
str_replace(buffer, 7, "CANalyzer", 10);
write(buffer);
//输出结果
//CANoe Informatik
//Vector CANalyzer

str_replace_regex

功能:用另一个字符串替换字符串中出现的所有字符。

s:要修改的字符串

pattern:正则表达式

replacement:替换部分的示例

代码示例

char buffer[70] = "Vector Informatik";
str_replace_regex(buffer, "Inf[a-z]*", "CANoe");
write(buffer);

你可能感兴趣的:(CAPL入门到入坑,CAPL,字符串复制与替换,vTESTstudio)