?? 漢字拼音生成.txt
字號:
實用技巧
在VFP中編程自動產(chǎn)生所輸入漢字的拼音
肇慶加美海外學校
張鏡明
---- 我們在編寫數(shù)據(jù)庫應用軟件時,常常需要設計對人名、地名等各種漢字信息進行查找的功能。如果只允許用戶輸入漢字來查找,會使得查找功能不靈活,不完善;但如果允許用戶輸入漢字的拼音作為查找條件,除了多設一個儲存漢字拼音的字段外,最大的問題在于輸入資料時還得額外輸入漢字的拼音,大大增加了輸入的工作量。能不能通過編程的手段在輸入漢字資料時自動產(chǎn)生其對應的拼音,從而解決這個矛盾呢?答案是肯定的,下面介紹的方法就能讓您輕松實現(xiàn)這個目的,為簡單敘述起見,我們假設只需要產(chǎn)生漢字的聲母,而不要韻母(無聲母的則取韻母的第一個字母)。
---- 要自動產(chǎn)生拼音,首先必須有個漢字-拼音對照表。去哪里找這個表?自己動手可做一個。做表的方法較復雜,要先用工具生成漢字與拼音對應的文本文件,再用編程的手段將需要的內(nèi)容加在數(shù)據(jù)表中。下面介紹一種具體的操作方法:
---- 第一步,利用“Windows 95附件”中“輸入法生成器”的逆轉(zhuǎn)化功能,將拼音輸入法的碼表文件“c:\windows\system\winpy.mb"逆轉(zhuǎn)換為文本文件“c:\winpy.txt"(當然轉(zhuǎn)換后的文件任您取名和指定位置)。用寫字板打開此文本文件,可以看到這樣的文字:
[Description]
Name=全拼
MaxCodes=12
MaxElement=1
UsedCodes=abcdefghijklmnopqrstuvwxyz
WildChar=?
NumRules=3
[Rule]
ca4=p10+p20+p30+p40
ce2=p10+p20
ce3=p10+p20+p30
[Text]
啊a
阿a
呵a
吖a
嗄a
腌a
錒a
阿爸aba
阿昌achang
---- 顯然,最前面12行此時對于我們來講是完全無用的,可用手工將之刪除。另外,文件中還有大量的詞的編碼,如“阿爸aba"、“阿昌achang"等,對我們也是無用的,如何將之去掉使得文件中只保留單字及其編碼呢?用手工顯然太麻煩,只能靠一段小程序了。我們這樣考慮,如果某行是單字及其編碼,則這行的第三個字符肯定是字母,可以取這行的前三個字符存放在另一個文件中;而如果某行是詞,則第三個字符是漢字的一部分,其asc值在128以上,我們就不用管它。
---- 下面給出這段小程序:
newfile=Fcreate('c:\py.txt')
&&創(chuàng)建文件,用于儲存單字及其編碼的文本
oldfile=Fopen('c:\winpy.txt') && 打開文件
=Fseek(oldfile, 0) && 移動指針到文件頭
Do while not feof(oldfile)
c=left(Fgets(oldfile),3)
if asc(right(c,1))< 128 then
cc=chr(34)-left(c,2)-chr(34)-","-chr(34)-right(c,1)-chr(34)
=FPUTS(newfile, cc) &&以"字","z" 這樣的格式寫在新文件里
endif
Enddo
= Fclose(newfile) && 關閉文件
= Fclose(oldfile) && 關閉文件
creat table py (漢字 c(2),拼音 c(1)) &&創(chuàng)建新表
use py &&打開此表
append from c:\py.txt type delimited &&從文本中追加數(shù)據(jù)
use
---- 運行這段程序后,一個存有漢字和拼音首個字母的表PY就產(chǎn)生了。將這個表加入到我們的數(shù)據(jù)庫中,并根據(jù)漢字建立索引,就可以使用這個表了。
---- 接下來要解決的問題是:輸入漢字后,如何將之轉(zhuǎn)換為拼音呢?假設在一個表單里已經(jīng)建立了一個名為“漢字”的文本框用于輸入漢字和一個名為“拼音”的文本框用于顯示漢字對應的拼音。我們可在“漢字”這個文本框的LostFoucs事件中寫入如下代碼:
local a,b,c
c=""
b=""
a=thisform.漢字.value
select py &&假設此表在此之前已經(jīng)打開且已經(jīng)指定索引
for i=2 to len(a) step 2
store right(left((a),i),2) to b
seek b
store c-py.拼音 to c
next i
thisform.拼音.value=c
---- 至此,自動產(chǎn)生拼音的工作可以說成功完成了。至于如何添加在你的資料表上,就不必羅嗦了。這個方法為我們設計數(shù)據(jù)庫應用軟件帶來了極大的好處,希望對大家有點啟發(fā)作用。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -