字符串类型
字符串是由字符组成的有穷序列,pascal提供string和ansistring二种字符串类型,二者只是在字符串的长度上有区别,string类型长度在255以内,超出255长度的部分被忽略,而ansistring类型没有长度限制(其实可存储2G的内容,所以看作长度无限制)。
字符串类型定义:
var 字符串变量: string[n];
- 其中:n是定义的字符串长度,必须是0~255之间的自然整数,第0号单元中存放串的实际长度,程序运行时由系统自动提供,第1~n号单元中存放串的字符。若将string[n]写成string,则默认n值为255。
字符串的操作
由字符串的常量、变量和运算符组成的表达式称为字符串表达式。
字符串运算符包括:
1.+:连接运算符
例如:‘Free ’+‘PASCAL’的结果是‘Free PASCAL’。
若连接的结果字符串长度超过255,则被截成255个字符。若连接后
的字符串存放在定义的字符串变量中,当其长度超过定义的字符串长度
时,超过部份字符串被截断。
例如:var str1,str2,str3:string[8];
begin
str1:=‘Free’;
str2:=‘PASCAL’;
str3:=str1+str2;
end.
则str3的值为:‘FreePASC’。
2.=、〈〉、〈、〈=、〉、〉=:关系运算符
两个字符串的比较规则为,从左到右按照ASCⅡ码值逐个比较,遇
到ASCⅡ码不等时,规定ASCⅡ码值大的字符所在的字符串为大。
例如:‘AB’〈‘AC’ 结果为真;
‘12’〈‘2’ 结果为真;
‘PASCAL ’=‘pascal’ 结果为假;
字符串的函数和过程
Free Pascal提供了八个标准函数和标准过程,见下表,利用这些标准函数与标准过程,一些涉及到字符串的问题可以灵活解决。
类型 |
函数和过程名 |
功 能 |
说 明 |
函数 |
copy(s,m,n) |
取s中第m个字符开始的n个字符 |
若m大于s的长度,则返回空串;否则,若m+n大于s的长度,则截断 |
函数 |
length(s) |
求s的动态的长度 |
返回值为整数 |
函数 |
pos(sub,s) |
在s中找子串sub |
返回值为sub在s中的位置,为byte型 |
过程 |
insert(sour,s,m) |
在s的第m个字符位置处插入子串sour |
若返回串超过255,则截断 |
过程 |
delete(s,m,n) |
删除s中第m个字符开始的n个字符串 |
若m大于s的长度,则不删除;否则,若m+n大于s的长度,则删除到结尾 |
过程 |
str(x[:w[:d]],s) |
将整数或实数x转换成字符串s |
w和d是整型表达式,意义同带字宽的write语句 |
过程 |
val(s,x,code) |
将字符串S 转换成整数或实数x |
若S中有非法字符,则code存放非法字符在S中的下标;否则,code为零。code为整型 |
函数 |
upcase(ch) |
将字母或字串ch转换成大写字母 |
若ch不为小写字母,则不转换 |
函数 |
lowercase(ch) |
将字母或字串ch转换成小写字母 |
若ch不为大写字母,则不转换 |