常用的字符串处理函数(一定要注意引用 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事件中加入如下所示的代码。
程序代码
其中isemail函数的代码如下所示,可将其添加到单元文件的implementation部分。
按下F9键执行程序。
如何获得字符串中汉字和英文的个数
Microsoft Word具有一项“字数统计”功能,可以统计出文本中汉字和英文的个数,其设计思路就是通过把字符转换为ASCII码数值来进行判断,Ord函数就可以把字符转换为对应的ASCII码数值,其中值为33-126为键盘可使用字符,值127以上的为未知字符,即汉字。下面完成一个示范程序,选择“File|New
Application”菜单命令,在默认的窗体中添加1个Memo组件、2个Label组件和2个Button组件,完成对各个组件的属性设置及布局之后,在“字数统计”按钮的OnClick事件中添加如下所示的代码。
使用拼音首字母序列实现检索功能
事实上,解决这个问题的思路很简单。那就是要找出汉字表中拼音首字母分别为“A”到“Z”的汉字内码范围,这样对于要检索的汉字,只需要检查它的内码位于哪一个首字母的范围内,就可以判断出它的拼音首字母。
下面完成一个示范程序,选择“File|New Application”菜单命令,在默认的窗体中添加1个Label组件、1个Bevel组件、1个Edit组件和2个ListBox组件。完成对各个组件的属性设置及布局之后,在Edit组件的OnChange事件中添加如下所示的代码。
这里所使用的SearchByPYIndexStr函数的代码如下所示,其功能是在字符串列表中检索符合拼音索引字符串的所有字符串。可将其添加到窗体单元文件的implementation部分。
上面程序中引用的GetPYIndexChar函数用于获取指定汉字的拼音索引字母,如“杜”的索引字母是“D”。该函数的代码如下所示,也将其添加到窗体单元文件的implementation部分。
完成之后,按下F9键运行程序,用户在编辑框中输入人名的拼音首字母后,在ListBox2中会自动检索对应的姓名。
函数名
AnsiCompareStr
AnsiCompareText
AnsiUpperCase
AnsiLowerCase
Appendstr
CompareStr
CompareText
Concat
Copy
Delete
Insert
Length
Pos
LeftStr
RightStr
InttoStr
StrtoInt
LowerCase
UpperCase
Val
TStrings对象的属性和方法
TStrings的一些重要属性和方法如下所示。
Count:该属性定义列表中字符串的数量。
Strings:该属性表示由参数Index指定位置的字符串。0表示第一个字符串,1表示第二个字符串,依此类推。
Text:TStings对象的文本,它包含一些由回车和换行符分开的字符串。
Add方法:该方法在字符串列表的末尾添加一字符串。在调用Add方法加入字符串之后,再返回新字符串的索引值。
AddObject方法:该方法向字符串列表中加入一个字符串及与它相联系的对象。调用AddObject方法之后将返回新字符串和对象的索引值。
Append方法:该方法将在字符串列表中添加一字符串,它与Add方法一样,但不返回值。
Clear方法:该方法将清空字符串列表。
Delete方法:删除指定的字符串。
Destroy方法:析构函数,毁坏一个TStrings对象实例。
IndexOf方法:function
Insert方法:该方法在指定位置插入一字符串。其参数Index为给定的位置索引值,参数S为要插入的字符串。
LoadFromFile方法:调用该方法将使用指定的文件填充文本。其参数FileName用来定义文件名,文件中行与行之间以回车和换行符隔开。事实上,LoadFromFile方法是运用Add方法将文件中的每一行添加到字符串列表中的。
SaveToFile方法:与LoadFromFile方法相对应,该方法将列表中的字符串存储于文件中,其参数FileName用来定义文件名。
如何判断输入的字符串是电子邮件地址
选择“File|New
程序代码
Procedure
TForm1.BitBtn1Click(Sender:
TObject);
begin
if isemail(Edit1.Text)
then
ShowMessage('正确的邮件地址!')
else
showmessage('错误的邮件地址!');
end;
begin
if
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;
var
s:
ETpos:
begin
ETpos:=
if
begin
s:=
if
Result:=
else
Result:=
end
else
Result:=
end;
按下F9键执行程序。
如何获得字符串中汉字和英文的个数
Microsoft
程序代码
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;
var
I,e,c:integer;
begin
s:=memo1.text;
e:=0;c:=0;
for
begin
if
begin
inc(e);
label1.caption:='英文字数:'+inttostr(e);
end
else
if
begin
inc(c);
label2.caption:='中文字数:'+inttostr(c
end;
end;
end;
使用拼音首字母序列实现检索功能
事实上,解决这个问题的思路很简单。那就是要找出汉字表中拼音首字母分别为“A”到“Z”的汉字内码范围,这样对于要检索的汉字,只需要检查它的内码位于哪一个首字母的范围内,就可以判断出它的拼音首字母。
下面完成一个示范程序,选择“File|New
程序代码
Procedure
TForm1.Edit1Change(Sender:
TObject);
var ResultStr:string;
begin
ResultStr:='';
listbox2.Items.Text :=
SearchByPYIndexStr(listbox1.Items,
edit1.Text);
end;
var
begin
ResultStr:='';
listbox2.Items.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;
label
var
i,
hzchar
begin
for
begin
for
begin
hzchar:=SourceStrs[i][2*j-1]+
if
GetPYIndexChar(hzchar))
goto
end;
if
result
else
result
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;
begin
case
$B0A1..$B0C4
$B0C5..$B2C0
$B2C1..$B4ED
$B4EE..$B6E9
$B6EA..$B7A1
$B7A2..$B8C0
$B8C1..$B9FD
$B9FE..$BBF6
$BBF7..$BFA5
$BFA6..$C0AB
$C0AC..$C2E7
$C2E8..$C4C2
$C4C3..$C5B5
$C5B6..$C5BD
$C5BE..$C6D9
$C6DA..$C8BA
$C8BB..$C8F5
$C8F6..$CBF9
$CBFA..$CDD9
$CDDA..$CEF3
$CEF4..$D188
$D1B9..$D4D0
$D4D1..$D7F9
else
result
end;
end;
完成之后,按下F9键运行程序,用户在编辑框中输入人名的拼音首字母后,在ListBox2中会自动检索对应的姓名。