把拼音转成汉字的函数?(200分)

  • 主题发起人 主题发起人 Mr-cure
  • 开始时间 开始时间
M

Mr-cure

Unregistered / Unconfirmed
GUEST, unregistred user!
我最近做个程序,需要模糊查询,输入拼音,得出汉字。<br>比如输入li,就得出 <br>里、离、力、立、李....<br>全部对应的同音汉字来,请问用什么函数?
 
搞个拼音、汉字对照表。<br>很容易,ucdos、windows下的全拼码表(用windows 的输入法生成器)都可以生成
 
好巧,我最近刚做了一个组件,不过是得出汉字字串的单字拼音<br>首字母,其实这样对付模糊查询就够了啊,不需要也不能把拼<br>音转换为汉字,因为汉字的同音字太多了,比如limian,假设li<br>这个音对应了m个汉字,mian对应n个汉字,则可能的汉字组合<br>为m*n个,你怎么去一个个查?<br><br>如果用我的组件,在数据库里加一个拼音字段,入库的时候自动<br>得出所要求模糊查询的字段的拼音首字母放入此拼音字段,检索<br>的时候查这一字段即可。<br><br>如果需要给我Email: Cheka@yeah.net<br><br>(原理很简单,自己做也行啊,相关资料在我的主页cheka.163.net<br>&nbsp; 有 :-)<br>
 
看这段代码吧(抄来的,修改了一下^_^)<br><br>function GetPYIndexChar( hzchar:string):char;<br>begin<br>&nbsp; case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of<br>&nbsp; &nbsp; $B0A1..$B0C4 : result := 'A';<br>&nbsp; &nbsp; $B0C5..$B2C0 : result := 'B';<br>&nbsp; &nbsp; $B2C1..$B4ED : result := 'C';<br>&nbsp; &nbsp; $B4EE..$B6E9 : result := 'D';<br>&nbsp; &nbsp; $B6EA..$B7A1 : result := 'E';<br>&nbsp; &nbsp; $B7A2..$B8C0 : result := 'F';<br>&nbsp; &nbsp; $B8C1..$B9FD : result := 'G';<br>&nbsp; &nbsp; $B9FE..$BBF6 : result := 'H';<br>&nbsp; &nbsp; $BBF7..$BFA5 : result := 'J';<br>&nbsp; &nbsp; $BFA6..$C0AB : result := 'K';<br>&nbsp; &nbsp; $C0AC..$C2E7 : result := 'L';<br>&nbsp; &nbsp; $C2E8..$C4C2 : result := 'M';<br>&nbsp; &nbsp; $C4C3..$C5B5 : result := 'N';<br>&nbsp; &nbsp; $C5B6..$C5BD : result := 'O';<br>&nbsp; &nbsp; $C5BE..$C6D9 : result := 'P';<br>&nbsp; &nbsp; $C6DA..$C8BA : result := 'Q';<br>&nbsp; &nbsp; $C8BB..$C8F5 : result := 'R';<br>&nbsp; &nbsp; $C8F6..$CBF9 : result := 'S';<br>&nbsp; &nbsp; $CBFA..$CDD9 : result := 'T';<br>&nbsp; &nbsp; $CDDA..$CEF3 : result := 'W';<br>&nbsp; &nbsp; $CEF4..$D188 : result := 'X';<br>&nbsp; &nbsp; $D1B9..$D4D0 : result := 'Y';<br>&nbsp; &nbsp; $D4D1..$D7F9 : result := 'Z';<br>&nbsp; else<br>&nbsp; &nbsp; result := char(0);<br>&nbsp; end;<br>end;<br><br>function getPyString(ChString:String);<br>var i, j:integer; Py,hzchar :string;<br>begin<br>&nbsp; Py:='';<br>&nbsp; i:=1;<br>&nbsp; while i&lt;=Length(ChString) do<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; hzchar:=ChString+ChString[i+1];<br>&nbsp; &nbsp; &nbsp; Py:=Py+GetPYIndexChar(hzchar);<br>&nbsp; &nbsp; &nbsp; i:=i+2;<br>&nbsp; &nbsp; end;<br>&nbsp; result:=Py;<br>end;<br><br>缺点是不能对付多音字。
 
我给你发了一个把汉字转换成拼音的例子过来,<br>你拭一下能不能稍做修改反过来用.<br><br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; beta@188.net
 
beta,你给我发的邮件我怎么还没有收到呢?<br><br>非常谢谢cheka,我想再等几天,如果再没有更好的答案,分数就给你了!
 
cheka,你的程序不能处理二级字库(难检字)!
 
接受答案了.
 

Similar threads

S
回复
0
查看
674
SUNSTONE的Delphi笔记
S
S
回复
0
查看
648
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部