首页 > 数据库 > mysql教程 > 汉字拼音数据库

汉字拼音数据库

WBOY
发布: 2016-06-07 15:10:52
原创
1801 人浏览过

所以要先对txt文件进行筛选,只留下简体汉字跟拼音,代码如下(WinDev语言,法文版) MonBuffer est un Buffer MonBuffer = fChargeTexte(C:Usersstagiaire57DesktopNotesBD_donnecedit.txt) MaCha?ne est une cha?ne UNICODE MaCha?ne = MonBuffer nI


汉字拼音数据库

所以要先对txt文件进行筛选,只留下简体汉字跟拼音,代码如下(WinDev语言,法文版)

MonBuffer est un Buffer 
MonBuffer = fChargeTexte("C:Usersstagiaire57DesktopNotesBD_donnecedit.txt")
MaCha?ne est une cha?ne UNICODE 
MaCha?ne = MonBuffer
nIDFichier est int= fOuvre("C:Usersstagiaire57DesktopNotesBD_donnecedittestSimplifie.txt", foLectureEcriture)
i est un int=1
TANTQUE ExtraitLigne(MaCha?ne,i)<> EOT  //<>是不等于的意思,就是说只要不等边界付就继续执行,一旦等于就停止执行。
unechaine est une cha?ne=ExtraitLigne(MaCha?ne,i)
//sUneNouvelleChaine1 est une cha?ne=ExtraitCha?ne(unechaine,1," ",DepuisDébut)
sUneNouvelleChaine2 est une cha?ne=ExtraitCha?ne(unechaine,2," ",DepuisDébut)
sUneNouvelleChaine3 est une cha?ne=ExtraitCha?ne(unechaine,2,["[","]"," and "])
sUneNouvelleChaine4 est une cha?ne=sUneNouvelleChaine2+TAB+sUneNouvelleChaine3
fEcritLigne(nIDFichier,sUneNouvelleChaine4)
i++
FIN

可以看出WinDev非常方便,几行代码就解决了可能其他语言要写一页的代码。处理后的txt文件如下:

汉字拼音数据库

那么现在大家可以清楚地看到,原始txt文件里面的拼音虽然有声调,但是都是用数组表示的,并没有真正的显示在字母上面,下面就是我的程序的新颖的地方,我把声调加在了相应的字母上面,然后再把数据放到数据库里面。代码如下:

PROCEDURE DetectAndChange(UnPinyin):UNICODE 字符串
sTestString 是一个 UNICODE 字符串=Middle(UnPinyin,Size(UnPinyin),1)


sLetterAreplace 是一个 UNICODE 字符串=""
sLetterReplace 是一个 UNICODE 字符串=""


nFound 是一个整数=0


IF FindVowel(UnPinyin,"a")=True THEN
n发现=1
sLetterAreplace="a"
根据 sChaineTest
案例“1”
sLetterReplace="ā"
案例“2”
sLetterReplace="á" 案例“3”
sLetterReplace="ǎ"
案例“4”
sLetterReplace="至"
案例“5”
sLetterReplace="a"
其他案例
重新发送Un拼音
结束
结束

IF nFound=0 _AND_ FindVowel(UnPinyin,"o")=True 那么
n发现=1
sLetterAreplace="o"
根据 sChaineTest
案例“1”
sLetterReplace="ō"
案例“2”
sLetterReplace="ó"
案例“3”
sLetterReplace="ǒ"
案例“4”
sLetterReplace="ò"
案例“5”
sLetterReplace="o"
其他案例
重新发送Un拼音
结束
结束


IF nFound=0 _AND_ FindVowel(UnPinyin,"e")=True   那么
n发现=1
sLetterAreplace="e"
根据 sChaineTest
案例“1”
sLetterReplace="ē"
案例“2”
sLetterReplace="é"
案例“3”
sLetterReplace="ě"
案例“4”
sLetterReplace="è"
案例“5”
sLetterReplace="e"
其他案例
重新发送Un拼音
结束
结束


IF nFound=0 _AND_ FindVowel(UnPinyin,"i")=True 那么
n发现=1
sLetterAreplace="i"
根据 sChaineTest
案例“1”
sLetterReplace="ī"
案例“2”
sLetterReplace="í"
案例“3”
sLetterReplace="ǐ"
案例“4”
sLetterReplace="ì"
案例“5”
sLetterReplace="i"
其他案例
重新发送Un拼音
结束
结束


IF nFound=0 _AND_ FindVowel(UnPinyin,"u")=True 那么
n发现=1
sLetterAreplace="u"
根据 sChaineTest
案例“1”
sLetterReplace="ū"
案例“2”
sLetterReplace="ú"
案例“3”
sLetterReplace="ǔ"
案例“4”
sLetterReplace="ù"
案例“5”
sLetterReplace="u"
其他案例
重新发送Un拼音
结束
结束

IF nFound=0 _AND_ FindVowel(UnPinyin,"v")=True 那么
n发现=1
sLetterAreplace="u:"
根据 sChaineTest
案例“1”
sLetterReplace="ǖ"
案例“2”
sLetterReplace="ǘ"
案例“3”
sLetterReplace="ǚ"
案例“4”
sLetterReplace="ǜ"
案例“5”
sLetterReplace="ü"
其他案例
重新发送Un拼音
结束
结束

如果 nFound=0 那么
重新发送Un拼音
结束
sUnPinyinReplaces 是一个字符串 UNICODE=Replaces(UnPinyin,sLetterAreplaces,sLetterReplaces)
RESEND Middle(sUnPinyinReplaces,1,Size(sUnPinyinReplaces)-1)

程序 ChangePinyinAccent()
MyBuffer 是一个缓冲区
MyBuffer = fLoadText("C:Userstrainee57DesktopPinyinTest.txt")
MyString 是一个 UNICODE 字符串
MyString = MyBuffer
HOpen(更改拼音1)
i 是一个 int=1

WHILE ExtractLine(MyString,i)<>结束时间
PinyinFinale 是一个 UNICODE 字符串=""
astring 是一个字符串=ExtractLine(MyString,i)
ChangePinyin1.Hanzi=ExtractString(somestring,1,TAB)
PinyinInitial 是一个字符串 UNICODE=ExtractString(somestring,2,TAB)

number 是一个整数=1
循环
APinyin 是一个字符串 UNICODE=ExtractString(InitialPinyin,number," ",FromStart)
数字++
IF UnPinyin=EOT THEN EXIT
PinyinFinale+=DetectANDchange(UnPinyin)
IF ExtractString(PinyinInitial,number," ",FromStart)<>EOT THEN PinyinFinal+=" "
结束

ChangePinyin1.Pinyin=PinyinFinal

HAdd(更改拼音1)
我++
结束

程序搜索元音(非拼音,字母):boolean
i 是一个整数=1
lengthUnPinyin 是一个整数 = Size(UnPinyin)

如果字母=“v”那么
循环
stringInstant 是一个字符串 UNICODE=Middle(OnePinyin,i,1)
IF stringInstant="u" AND Middle(UnPinyin,i+1,1)=":"THEN                                      
RENVOYER Vrai
FIN
SI i=longuerUnPinyin ALORS 
RENVOYER Faux
FIN
i++
FIN
FIN

SI lettre="u" ALORS
BOUCLE
chaineInstant est une cha?ne UNICODE=Milieu(UnPinyin,i,1)
SI chaineInstant=lettre ET Milieu(UnPinyin,i+1,1)<>":" ALORS                                       
RENVOYER Vrai
FIN
SI i=longuerUnPinyin ALORS 
RENVOYER Faux
FIN
i++
FIN
FIN

BOUCLE
chaineInstant est une cha?ne UNICODE=Milieu(UnPinyin,i,1)
SI chaineInstant=lettre ALORS                                       
RENVOYER Vrai
FIN
SI i=longuerUnPinyin ALORS 
RENVOYER Faux
FIN
i++
FIN

最终的数据库如下:

汉字拼音数据库


好了所有的数据库程序就这些,可以看出WinDev真的是一门很方便的语言,它的数据库是HyperSQL,但是这个语言也可以往其他的数据库中写数据。

希望文章对大家有帮助。

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板