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  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,  :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  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中会自动检索对应的姓名。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值