在日常工作和生活中我們經常使用電子記事本查詢個人通訊錄資訊,或在單位的應用程式中查詢客戶檔案或業務資料,這個過程中往往需要輸入大量的漢字資訊,對於熟悉計算機的人這已經是一件頭疼的事,那些不太熟悉計算機或根本不懂漢字輸入的使用者簡直就望而生畏。作為對資料檢索技術的一種新的嘗試,作者探索使用漢字拼音的首字串行作為檢索關鍵字,這樣,使用者不必使用漢字,只須簡單地鍵入要查詢資訊的每個漢字的拼音首字元即可。比如你想查詢關鍵字「中國人民銀行」,你只需要輸入「zgrmyh」。作者希望通過下面的例子,為廣大計算機同行起乙個拋磚引玉的作用,讓我們開發的程式更加便捷、好用。
原理很簡單,找出漢字表中拼音首字元分別為「a」至「z」的漢字內碼範圍,這樣,對於要檢索的漢字只需要檢查它的內碼位於哪乙個首字元的範圍內,就可以判斷出它的拼音首字元。
程式更簡單,包括3個控制項:乙個列表存放著所有待檢索的資訊;乙個列表用於存放檢索後的資訊;乙個編輯框用於輸入檢索關鍵字(即拼音首字串行)。詳細如下:
1.進入delphi建立乙個新工程:project1
2.在form1上建立以下控制項並填寫屬性:
控制項型別 屬性名稱 屬性值
edit name search
listbox name sourcelist
items 輸入一些字串,如姓名等,用於提供檢索資料
listbox name resultlist
3.鍵入以下兩個函式
// 獲取指定漢字的拼音索引字母,如:「漢」的索引字母是「h」
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;
// 在指定的字串列表sourcestrs中檢索符合拼音索引字串
pyindexstr的所有字串,並返回。
function searchbypyindexstr
( sourcestrs:tstrings;
pyindexstr:string):string;
label notfound;
vari, 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;
4.增加編輯框search的onchange事件:
procedure tform1.searchchange(sender: tobject);
var resultstr:string;
begin
resultstr:='';
resultlist.items.text := searchbypyindexstr(sourcelist.items, search.text);
end;
5.編譯執行後,在編輯框search中輸入要查詢字串的拼音首字串行,檢索結果列表resultlist就會列出檢索到的資訊,檢索中還支援「?」萬用字元,對於難以確定的的文字使用「?」替代位置,可以實現更複雜的檢索。
本程式在delphi5.0中編譯執行通過。
sqlserver取字串拼音首字母
sqlserver 使用函式獲取乙個字串的拼音首字母 create function dbo.fn getpinyin str nvarchar max returns nvarchar max as begin declare word nchar 1 py nvarchar max set py...
delphi 字串 生成拼音碼
獲取拼音碼函式 function getpy 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 b4e...
將字元或者字串轉換為拼音首字母類
using system using system.data using system.configuration using system.web using system.web.security using system.web.ui using system.web.ui.webcontro...