本文整理自网络,侵删。
常用的字符串处理函数(一定要注意引用 strutils单元)函数名 语法 功能AnsiCompareStr function AnsiCompareStr(const S1, S2: string): Integer; 用于比较两个大小写敏感的字符串AnsiCompareText function AnsiCompareText(const S1, S2: string): Integer; 用于比较两个大小写不敏感的字符串AnsiUpperCase function AnsiUpperCase(const S: string): string; 将字符串转换为全部大写AnsiLowerCase function AnsiLowerCase(const S: string): string; 将字符串转换为全部小写Appendstr procedure AppendStr(var Dest: string; const S: string); deprecated; 将给定字符串常量添加到目标字符串末尾CompareStr function CompareStr(const S1, S2: string): Integer; 用于比较两个大小写敏感的字符串,其结果与区域设置无关CompareText function CompareText(const S1, S2: string): Integer; 用于比较两个大小写不敏感的字符串,其结果与区域设置无关Concat function Concat(s1 [, s2,..., sn]: string): string; 将一组字符串连接起来Copy function Copy(S; Index, Count: Integer): string; 返回字符串的子串Delete procedure Delete(var S: string; Index, Count:Integer); 从字符串中删除一个子串Insert procedure Insert(Source: string; var S: string; Index: Integer); 在字符串的指定位置插入一个子串Length function Length(S): Integer; 返回字符串中中字符的个数Pos function Pos(Substr: string; S: string): Integer; 在字符串中搜索子串,返回的是索引值LeftStr function LeftStr(const AText: AnsiString; const ACount: Integer): AnsiString; 返回从字符串左边开始指定长度的子串RightStr function RightStr(const AText: AnsiString; const ACount: Integer): AnsiString; 返回从字符串末尾向前指定长度的子串InttoStr function IntToStr(Value: Integer): string; 将整数转换为字符串StrtoInt function StrToInt(const S: string): Integer; 将字符串转换为整数LowerCase function LowerCase(const S: string): string; 转换为小写UpperCase function UpperCase(const S: string): string; 转化为大写Val procedure Val(S; var V; var Code: Integer); 将字符串的值转换为其数字表示式
TStrings对象的属性和方法TStrings的一些重要属性和方法如下所示。Count:该属性定义列表中字符串的数量。Strings:该属性表示由参数Index指定位置的字符串。0表示第一个字符串,1表示第二个字符串,依此类推。Text:TStings对象的文本,它包含一些由回车和换行符分开的字符串。Add方法:该方法在字符串列表的末尾添加一字符串。在调用Add方法加入字符串之后,再返回新字符串的索引值。AddObject方法:该方法向字符串列表中加入一个字符串及与它相联系的对象。调用AddObject方法之后将返回新字符串和对象的索引值。Append方法:该方法将在字符串列表中添加一字符串,它与Add方法一样,但不返回值。Clear方法:该方法将清空字符串列表。Delete方法:删除指定的字符串。Destroy方法:析构函数,毁坏一个TStrings对象实例。IndexOf方法:function IndexOf(const S:string):integer; 该方法的功能是返回字符串S在字符串列表中的索引值。调用IndexOf函数返回的是第一次发现字符串S的位置。其返回值也以0作为起点,若返回0则表示是第一个字符串,返回1表示是第二个字符串,依此类推。如果指定的字符串S不在列表中,则返回-1。需要指出的是,若S在字符串列表中出现的次数大于1,则IndexOf方法返回的是第一次发现的位置值。Insert方法:该方法在指定位置插入一字符串。其参数Index为给定的位置索引值,参数S为要插入的字符串。LoadFromFile方法:调用该方法将使用指定的文件填充文本。其参数FileName用来定义文件名,文件中行与行之间以回车和换行符隔开。事实上,LoadFromFile方法是运用Add方法将文件中的每一行添加到字符串列表中的。SaveToFile方法:与LoadFromFile方法相对应,该方法将列表中的字符串存储于文件中,其参数FileName用来定义文件名。如何判断输入的字符串是电子邮件地址选择“File|New Application”菜单命令,在默认建立从窗体中添加1个Label组件、1个Edit组件和1个Bitbtn组件,完成各个组件的属性设置即布局之后,在Bitbtn组件的OnClick事件中加入如下所示的代码。程序代码Procedure TForm1.BitBtn1Click(Sender: TObject);beginif isemail(Edit1.Text) thenShowMessage('正确的邮件地址!')elseshowmessage('错误的邮件地址!');end;
其中isemail函数的代码如下所示,可将其添加到单元文件的implementation部分。程序代码Function IsEMail(EMail: String): Boolean;vars: String;ETpos: Integer;beginETpos:= pos('@', EMail); //获取@符号的位置if ETpos > 1 then begin s:= copy(EMail,ETpos+1,Length(EMail)); //截取子串if (pos('.', s) > 1) and (pos('.', s) < length(s)) then Result:= trueelse Result:= false; endelse Result:= false; end;
按下F9键执行程序。如何获得字符串中汉字和英文的个数Microsoft Word具有一项“字数统计”功能,可以统计出文本中汉字和英文的个数,其设计思路就是通过把字符转换为ASCII码数值来进行判断,Ord函数就可以把字符转换为对应的ASCII码数值,其中值为33-126为键盘可使用字符,值127以上的为未知字符,即汉字。下面完成一个示范程序,选择“File|New Application”菜单命令,在默认的窗体中添加1个Memo组件、2个Label组件和2个Button组件,完成对各个组件的属性设置及布局之后,在“字数统计”按钮的OnClick事件中添加如下所示的代码。程序代码Procedure TForm1.Button1Click(Sender: TObject);var s:string;I,e,c:integer;begins:=memo1.text; //Memo的内容e:=0;c:=0;for I:=1 to length(s) dobeginif (ord(s[I])>=33)and(ord(s[I])<=126) thenbegininc(e);label1.caption:='英文字数:'+inttostr(e);endelseif (ord(s[I])>=127) thenbegininc(c);label2.caption:='中文字数:'+inttostr(c div 2);end;end;end;
使用拼音首字母序列实现检索功能事实上,解决这个问题的思路很简单。那就是要找出汉字表中拼音首字母分别为“A”到“Z”的汉字内码范围,这样对于要检索的汉字,只需要检查它的内码位于哪一个首字母的范围内,就可以判断出它的拼音首字母。下面完成一个示范程序,选择“File|New Application”菜单命令,在默认的窗体中添加1个Label组件、1个Bevel组件、1个Edit组件和2个ListBox组件。完成对各个组件的属性设置及布局之后,在Edit组件的OnChange事件中添加如下所示的代码。程序代码Procedure TForm1.Edit1Change(Sender: TObject);var ResultStr:string;beginResultStr:='';listbox2.Items.Text := SearchByPYIndexStr(listbox1.Items, edit1.Text);end;
这里所使用的SearchByPYIndexStr函数的代码如下所示,其功能是在字符串列表中检索符合拼音索引字符串的所有字符串。可将其添加到窗体单元文件的implementation部分。程序代码Function SearchByPYIndexStr( SourceStrs:TStrings; PYIndexStr:string):string;label NotFound;vari, j :integer;hzchar :string;beginfor i:=0 to SourceStrs.Count-1 dobeginfor j:=1 to Length(PYIndexStr) dobeginhzchar:=SourceStrs[i][2*j-1]+ SourceStrs[i][2*j];if (PYIndexStr[j]<>'?') and (UpperCase(PYIndexStr[j]) <>GetPYIndexChar(hzchar)) then goto NotFound;end;if result='' then result := SourceStrs[i]else result := result + Char(13) + SourceStrs[i];NotFound:end;end;
上面程序中引用的GetPYIndexChar函数用于获取指定汉字的拼音索引字母,如“杜”的索引字母是“D”。该函数的代码如下所示,也将其添加到窗体单元文件的implementation部分。程序代码Function GetPYIndexChar( hzchar:string):char;begincase WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of$B0A1..$B0C4 : result := 'A';$B0C5..$B2C0 : result := 'B';$B2C1..$B4ED : result := 'C';$B4EE..$B6E9 : result := 'D';$B6EA..$B7A1 : result := 'E';$B7A2..$B8C0 : result := 'F';$B8C1..$B9FD : result := 'G';$B9FE..$BBF6 : result := 'H';$BBF7..$BFA5 : result := 'J';$BFA6..$C0AB : result := 'K';$C0AC..$C2E7 : result := 'L';$C2E8..$C4C2 : result := 'M';$C4C3..$C5B5 : result := 'N';$C5B6..$C5BD : result := 'O';$C5BE..$C6D9 : result := 'P';$C6DA..$C8BA : result := 'Q';$C8BB..$C8F5 : result := 'R';$C8F6..$CBF9 : result := 'S';$CBFA..$CDD9 : result := 'T';$CDDA..$CEF3 : result := 'W';$CEF4..$D188 : result := 'X';$D1B9..$D4D0 : result := 'Y';$D4D1..$D7F9 : result := 'Z';elseresult := char(0);end;end;
完成之后,按下F9键运行程序,用户在编辑框中输入人名的拼音首字母后,在ListBox2中会自动检索对应的姓名。
相关阅读 >>
Delphi firedac 下的 sqlite [1] - 前言
Delphi 利用tidencodermime tiddecodermime 组件字符串加密解密
Delphi 在状态条中显示进度条,webbrowser示例
更多相关阅读请进入《Delphi》频道 >>