第3章字符串表达式
GeoGeo提供了自有的字符串处理方式。字符串类型的声明和字符串数组已经在第1章进行了简单介绍。本章进一步介绍字符串表达式。
3.1字符串中的转义符
3.2.1字符串中的回车换行
字符串中的反斜线\后面跟随n或者r时转换为回车换行符“\n”或“\r”。
3.2.2字符串中的反斜线
文件目录路径等经常需要用到字符串中的反斜线\,需要双写“\\”。
3.2.3字符串中的双引号
双引号内通常用于标识字符串的开头和结尾,当串中需要使用双引号时,前面加上反斜线“\"”。
3.2字符串比较
字符串比较使用“==”操作符和“!=”操作符,用于比较两个字符串是否一致或者不一致。使用“==”操作符时,如果两个字符串完全一致,字符串比较表达式如果求值为真,返回一个非0值,否则返回0。使用“!=”操作符时,如果两个字符串不同,字符串比较表达式如果求值为真,返回一个非0值,否则返回0。
字符串比较表达式经常用于条件跳转语句,如:
if(str1 == str2)
{
... //执行条件满足时的语句
}
或者:
if(str1!= str2)
{
... //执行条件满足时的语句
}
注意:字符串变量不可使用除“==”操作符和“!=”操作符以外的比较操作符。
3.3字符串加
字符串相加是将两个字符串连接在一起,如:
STRING str1 = "GeoGeo";
STRING str2 = "脚本";
str1 = str1+str2;
相加的结果在str1中,值为“GeoGeo脚本”。
下面是一个字符串相加的示例代码:
程序清单3.1 3-1-字符串加.c
1 main(){
2 //字符串用类型名STRING声明,下面声明一个字符串类型的变量
3 STRING str;
4 //字符串常量用一对儿引号括起来,用=号为字符串变量赋值
5 str ="ABC";
6 //字符串中的反斜线\后面跟随n或者r时转换为回车换行符
7 STRING str1 ="GeoGeo脚本语言\n";
8 STRING str2;
9 str2 ="沈阳农业大学应用气象系\r李国春";
10 intn = MessageBox(str1+str2);
11 //字符串中需要反斜线\时需要双写"\\"
12 str2 = str2 +"\nC:\\MyFolder\\MyFile.txt";
13 n = MessageBox(str1+str2);
14 //字符串中需要双引号时需要写在\后面\"
15 str2 = str2 +"\n\"Hello World!\"";
16 n = MessageBox(str1+str2);
17}
运行上述代码,在第10行输出:
图 3.1程序清单3.1输出结果
在第13行输出增加了一行:
C:\MyFolder\MyFile.txt
在第16行输出增加了一行:
"Hello World!"
3.4字符串减
字符串减使用减号“-”操作符,目的是将字符串内容裁减掉一部分。
3.4.1字符串与字符减
字符串与字符减表达式表示为:<字符串变量> =<来源字符串变量> -<字符>。
将来源字符串变量自右向左搜索匹配字符,将匹配字符及其以后的所有字符减掉,赋值给字符串变量。例如从一个完整的文件路径名去掉文件扩展名:
程序清单3.2 3-2-字符串减.c
main(){
//字符串与字符相减。注意是从右侧查找,减去匹配字符右侧的所有字符。
STRING str[4];
str[0] ="C:\\MyFolder\\MyFile.txt";
BYTEch ='.';
str[1] = str[0] - ch;//将文件路径中的.txt去掉
ch ='\\';
str[2] = str[0] - ch;//只保留路径名
//循环查找,只保留驱动器号。
STRING s;
str[3] = str[0];
do{
s = str[3];
str[3] = str[3] - ch;
}while(s!= str[3]);
//输出结果。
inti;
for(i=0;i<4; i=i+1){
Print(str[i]);
}
}
上述代码运行后的输出结果为:
C:\MyFolder\MyFile.txt
C:\MyFolder\MyFile
C:\MyFolder
C:
3.4.2字符串与字符串减
字符串与字符串减表达式表示为:<字符串变量> =<来源字符串变量> -<目标字符串变量>。
将来源字符串变量自左向右搜索匹配子字符串,将匹配子字符串及其以后的所有字符减掉,赋值给字符串变量。如:
str1 ="C:\\MyFolder\\MyFile.txt";
str2 = "MyFolder";
str1 = str1 - str2;
输出结果为:
C:\
3.5字符串取余
字符串取余定义为与字符串减相对应的操作,保留字符串减操作中被减掉的部分。字符串取余使用百分号“%”操作符。
3.5.1字符串与字符取余
字符串与字符取余表达式表示为:<字符串变量> =<来源字符串变量> %<字符>。
将来源字符串变量自右向左搜索匹配字符,将匹配字符及其以前的所有字符去掉,保留匹配字符之后的部分字符串。例如从一个完整的文件路径名提取文件名:
程序清单3.3 字符串取余.c
main(){
STRINGstr = "C:\\MyFolder\\MyFile.txt";
BYTE ch = '\\';
str = str % ch;
Print(str);
}
输出结果为:
MyFile.txt
3.5.2字符串与字符串取余
字符串与字符取余表达式表示为:<字符串变量> =<来源字符串变量> %<字符串>。
将来源字符串变量自左向右搜索匹配子字符串,将匹配子字符串及其以前的所有字符去掉,赋值给字符串变量。
3.6本章小结
1.字符串可以使用转义符,类似C中的转义符。
2.可以使用 ==直接进行字符串比较。
3.可以使用 +操作符直接将2个字符串合并成1个字符串。
4.字符串(来源字符串)可以直接使用–操作符与一个字符或者字符串(目标字符串)相减。相减的结果保留来源串自左至右第一次与目标串匹配的左侧部分。
5.来源字符串也可以直接使用 %操作符与一个字符或者目标字符串取余。取余的结果保留来源串自右至左第一次与目标串匹配的右侧部分。