使用拼音首字母序列实现检索功能.docx
- 文档编号:9024372
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:8
- 大小:17.48KB
使用拼音首字母序列实现检索功能.docx
《使用拼音首字母序列实现检索功能.docx》由会员分享,可在线阅读,更多相关《使用拼音首字母序列实现检索功能.docx(8页珍藏版)》请在冰豆网上搜索。
使用拼音首字母序列实现检索功能
使用拼音首字母序列实现检索功能
[转]Delphi关于字符串的操作
常用的字符串处理函数(一定要注意引用strutils单元)
函数名语法功能
AnsiCompareStrfunctionAnsiCompareStr(constS1,S2:
string):
Integer;用于比较两个大小写敏感的字符串
AnsiCompareTextfunctionAnsiCompareText(constS1,S2:
string):
Integer;用于比较两个大小写不敏感的字符串
AnsiUpperCasefunctionAnsiUpperCase(constS:
string):
string;将字符串转换为全部大写
AnsiLowerCasefunctionAnsiLowerCase(constS:
string):
string;将字符串转换为全部小写
AppendstrprocedureAppendStr(varDest:
string;constS:
string);deprecated;将给定字符串常量添加到目标字符串末尾
CompareStrfunctionCompareStr(constS1,S2:
string):
Integer;用于比较两个大小写敏感的字符串,其结果与区域设置无关
CompareTextfunctionCompareText(constS1,S2:
string):
Integer;用于比较两个大小写不敏感的字符串,其结果与区域设置无关
ConcatfunctionConcat(s1[,s2,...,sn]:
string):
string;将一组字符串连接起来
CopyfunctionCopy(S;Index,Count:
Integer):
string;返回字符串的子串
DeleteprocedureDelete(varS:
string;Index,Count:
Integer);从字符串中删除一个子串
InsertprocedureInsert(Source:
string;varS:
string;Index:
Integer);在字符串的指定位置插入一个子串
LengthfunctionLength(S):
Integer;返回字符串中中字符的个数
PosfunctionPos(Substr:
string;S:
string):
Integer;在字符串中搜索子串,返回的是索引值
LeftStrfunctionLeftStr(constAText:
AnsiString;constACount:
Integer):
AnsiString;返回从字符串左边开始指定长度的子串
RightStrfunctionRightStr(constAText:
AnsiString;constACount:
Integer):
AnsiString;返回从字符串末尾向前指定长度的子串
InttoStrfunctionIntToStr(Value:
Integer):
string;将整数转换为字符串
StrtoIntfunctionStrToInt(constS:
string):
Integer;将字符串转换为整数
LowerCasefunctionLowerCase(constS:
string):
string;转换为小写
UpperCasefunctionUpperCase(constS:
string):
string;转化为大写
ValprocedureVal(S;varV;varCode:
Integer);将字符串的值转换为其数字表示式
TStrings对象的属性和方法
TStrings的一些重要属性和方法如下所示。
Count:
该属性定义列表中字符串的数量。
Strings:
该属性表示由参数Index指定位置的字符串。
0表示第一个字符串,1表示第二个字符串,依此类推。
Text:
TStings对象的文本,它包含一些由回车和换行符分开的字符串。
Add方法:
该方法在字符串列表的末尾添加一字符串。
在调用Add方法加入字符串之后,再返回新字符串的索引值。
AddObject方法:
该方法向字符串列表中加入一个字符串及与它相联系的对象。
调用AddObject方法之后将返回新字符串和对象的索引值。
Append方法:
该方法将在字符串列表中添加一字符串,它与Add方法一样,但不返回值。
Clear方法:
该方法将清空字符串列表。
Delete方法:
删除指定的字符串。
Destroy方法:
析构函数,毁坏一个TStrings对象实例。
IndexOf方法:
functionIndexOf(constS:
string):
integer;该方法的功能是返回字符串S在字符串列表中的索引值。
调用IndexOf函数返回的是第一次发现字符串S的位置。
其返回值也以0作为起点,若返回0则表示是第一个字符串,返回1表示是第二个字符串,依此类推。
如果指定的字符串S不在列表中,则返回-1。
需要指出的是,若S在字符串列表中出现的次数大于1,则IndexOf方法返回的是第一次发现的位置值。
Insert方法:
该方法在指定位置插入一字符串。
其参数Index为给定的位置索引值,参数S为要插入的字符串。
LoadFromFile方法:
调用该方法将使用指定的文件填充文本。
其参数FileName用来定义文件名,文件中行与行之间以回车和换行符隔开。
事实上,LoadFromFile方法是运用Add方法将文件中的每一行添加到字符串列表中的。
SaveToFile方法:
与LoadFromFile方法相对应,该方法将列表中的字符串存储于文件中,其参数FileName用来定义文件名。
如何判断输入的字符串是电子邮件地址
选择“File|NewApplication”菜单命令,在默认建立从窗体中添加1个Label组件、1个Edit组件和1个Bitbtn组件,完成各个组件的属性设置即布局之后,在Bitbtn组件的OnClick事件中加入如下所示的代码。
程序代码
ProcedureTForm1.BitBtn1Click(Sender:
TObject);
begin
ifisemail(Edit1.Text)then
ShowMessage('正确的邮件地址!
')
else
showmessage('错误的邮件地址!
');
end;
其中isemail函数的代码如下所示,可将其添加到单元文件的implementation部分。
程序代码
FunctionIsEMail(EMail:
String):
Boolean;
var
s:
String;
ETpos:
Integer;
begin
ETpos:
=pos('@',EMail);//获取@符号的位置
ifETpos>1then
begin
s:
=copy(EMail,ETpos+1,Length(EMail));//截取子串
if(pos('.',s)>1)and(pos('.',s) Result: =true else Result: =false; end else Result: =false; end; 按下F9键执行程序。 如何获得字符串中汉字和英文的个数 MicrosoftWord具有一项“字数统计”功能,可以统计出文本中汉字和英文的个数,其设计思路就是通过把字符转换为ASCII码数值来进行判断,Ord函数就可以把字符转换为对应的ASCII码数值,其中值为33-126为键盘可使用字符,值127以上的为未知字符,即汉字。 下面完成一个示范程序,选择“File|NewApplication”菜单命令,在默认的窗体中添加1个Memo组件、2个Label组件和2个Button组件,完成对各个组件的属性设置及布局之后,在“字数统计”按钮的OnClick事件中添加如下所示的代码。 程序代码 ProcedureTForm1.Button1Click(Sender: TObject); vars: string; I,e,c: integer; begin s: =memo1.text;//Memo的内容 e: =0;c: =0; forI: =1tolength(s)do begin if(ord(s[I])>=33)and(ord(s[I])=127)then begin inc(c); label2.caption: ='中文字数: '+inttostr(cdiv2); end; end; end; 使用拼音首字母序列实现检索功能 事实上,解决这个问题的思路很简单。 那就是要找出汉字表中拼音首字母分别为“A”到“Z”的汉字内码范围,这样对于要检索的汉字,只需要检查它的内码位于哪一个首字母的范围内,就可以判断出它的拼音首字母。 下面完成一个示范程序,选择“File|NewApplication”菜单命令,在默认的窗体中添加1个Label组件、1个Bevel组件、1个Edit组件和2个ListBox组件。 完成对各个组件的属性设置及布局之后,在Edit组件的OnChange事件中添加如下所示的代码。 程序代码 ProcedureTForm1.Edit1Change(Sender: TObject); varResultStr: string; begin ResultStr: =''; listbox2.Items.Text: =SearchByPYIndexStr(listbox1.Items,edit1.Text); end; 这里所使用的SearchByPYIndexStr函数的代码如下所示,其功能是在字符串列表中检索符合拼音索引字符串的所有字符串。 可将其添加到窗体单元文件的implementation部分。 程序代码 FunctionSearchByPYIndexStr(SourceStrs: TStrings;PYIndexStr: string): string; labelNotFound; var i,j: integer; hzchar: string; begin fori: =0toSourceStrs.Count-1do begin forj: =1toLength(PYIndexStr)do begin hzchar: =SourceStrs[i][2*j-1]+SourceStrs[i][2*j]; if(PYIndexStr[j]'? ')and(UpperCase(PYIndexStr[j]) GetPYIndexChar(hzchar))then gotoNotFound; end; ifresult=''then result: =SourceStrs[i] else result: =result+Char(13)+SourceStrs[i]; NotFound: end; end; 上面程序中引用的GetPYIndexChar函数用于获取指定汉字的拼音索引字母,如“杜”的索引字母是“D”。 该函数的代码如下所示,也将其添加到窗体单元文件的implementation部分。 程序代码 FunctionGetPYIndexChar(hzchar: string): char; begin caseWORD(hzchar[1])shl8+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中会自动检索对应的姓名。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 拼音 首字母 序列 实现 检索 功能
![提示](https://static.bdocx.com/images/bang_tan.gif)