冬雪雪冬 发表于 2017-6-16 21:31:15

基本数据类型与表达式06 - 零基础入门学习Delphi007

这一讲主要是字符串函数。字符串在计算机系统内实际上后面还跟着一个”\0”,只不过我们观察不到,计算字符串长度等运算时也不计这个”\0”。主要字符串函数如下
函数说明参数类型返回值类型
LowerCase(s)小写函数,返回s的小写状态常数 StringString
UpperCase(s)大写函数返回s的大写状态常数 StringString
CompareStr(s1, s2)比较函数,依次比较两个字符串的每个字符的ascii的大小,直至能比较出大小,返回这轮比较的字符ascii差值,如到最后仍不能比出大小,则返回0两个都是常数 StringInteger
CompareText(s1, s2)比较函数,与CompareStr类似,但不考虑字符串的大小写两个都是常数 StringInteger
Length(s)字符串长度函数,返回字符串的长度,中文字符算2个StringInteger
Pos(s1, s2)字符串位置函数,返回s1在s2中首次出现的位置,注意位置从1开始计,若找不到返回0StringInteger
AppendStr(s1, s2)合并字符串过程,将s1 + s2赋值给s1,但比加法运算速度快S1为String,s2为常数String过程没有返回值
Copy(str, m, n)截取子字符串函数,截取str的从位置m开始长度为n子字符串,如果m大于字符串长度返回’’,如果m + n大于字符串长度,则返回从m到字符串结尾的子字符串Str为string, m, n为IntegerString
Delete(str, m, n)删除子字符串过程,将字符串str从位置m开始删除n个字符,如果m大于字符串长度则不删除,如果m + n大于字符串长度,则到字符串结尾,如果n<=0,则不删除Str为string, m, n为Integer过程没有返回值
Insert(str1, str, k)插入子字符串过程,将子字符串str1插入到字符串str的第k个位置,如果k大于字符串长度则插到最后Str1和str为string, k为Integer过程没有返回值
LowerCase等函数的参数为常数的字符串,这个我不是很理解,难道强调其不可改变,这个是形参呀。Length的参数帮助中说可以是string,也可以是数组。Copy的参数Str可以是string,也可以是数组,返回值也是。注意m和n不要截取到半个汉字,否则会将前一个汉字的后半截ascii码和后一个汉字的前半截ascii码重新组成一个新汉字,得到莫名其妙的结果,如Copy('汉字字符', 2, 6)返回’鹤肿址’,所以说delphi对汉字或者说对unicode的支持还是不理想的。一个过程都没有返回值,但仍将结果通过参数“返回”给变量了。这是delphi的实参的形式起作用。还有几个我们都很熟悉了,就不在表中列出了:IntToStr, StrToInt, FloatToStr, StrToFloat。下面编写个小程序,输入一个字符串,得到它的长度和全大写全小写。程序很简单,只是用到了一个新的事件过程,Change。Edit的Change事件是当它的text有改变时引发的。
procedure TForm1.Edit1Change(Sender: TObject);
begin
Edit2.Text := IntToStr(Length(Edit1.Text));
Edit3.Text := UpperCase(Edit1.Text);
Edit4.Text := LowerCase(Edit1.Text);
end;


john19997 发表于 2021-9-13 22:24:41

特别是COPY DEL,INSERT, 真不错. 谢谢楼主的笔记...
页: [1]
查看完整版本: 基本数据类型与表达式06 - 零基础入门学习Delphi007