您的位置:首页 > 编程语言 > Delphi

delphi中关于字符串的操作

2011-09-15 17:03 295 查看
原文地址:delphi中关于字符串的操作 [转贴]作者:阳光灿烂

常用的字符串处理函数(一定要注意引用 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);

begin

if isemail(Edit1.Text) then

ShowMessage('正确的邮件地址!')

else

showmessage('错误的邮件地址!');

end;

其中isemail函数的代码如下所示,可将其添加到单元文件的implementation部分。

程序代码
Function IsEMail(EMail: String): Boolean;

var

s: String;

ETpos: Integer;

begin

ETpos:= 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:= true

else

Result:= false;

end

else

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;

begin

s:=memo1.text; //Memo的内容

e:=0;c:=0;

for I:=1 to length(s) do

begin

if (ord(s[I])>=33)and(ord(s[I])<=126) then

begin

inc(e);

label1.caption:='英文字数:'+inttostr(e);

end

else

if (ord(s[I])>=127) then

begin

inc(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;

begin

ResultStr:='';

listbox2.Items.Text := SearchByPYIndexStr(listbox1.Items, edit1.Text);

end;

这里所使用的SearchByPYIndexStr函数的代码如下所示,其功能是在字符串列表中检索符合拼音索引字符串的所有字符串。可将其添加到窗体单元文件的implementation部分。

程序代码
Function SearchByPYIndexStr( SourceStrs:TStrings; PYIndexStr:string):string;

label NotFound;

var

i, j :integer;

hzchar :string;

begin

for i:=0 to SourceStrs.Count-1 do

begin

for j:=1 to Length(PYIndexStr) do

begin

hzchar:=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;

begin

case 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';

else

result := char(0);

end;

end;

完成之后,按下F9键运行程序,用户在编辑框中输入人名的拼音首字母后,在ListBox2中会自动检索对应的姓名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: