查找了一下,网站里对于如何获取汉字拼音首字母的帖子不少,但都没提到多音字的问题。
如何获取汉字拼音首字母,这里就不讨论了,可以用通过字库,也可以通过判断汉字内码的方式。
需要请教各位的是,如果是多音字,该如何获取一段句子的首字母?
比如“任长霞”,要返回二个结果:
RCX
RZX
更复杂的“任长呆”,两个多音字,就要返回:
RCD
RZD
RCA
RZA这个如何通过算法实现?
如何获取汉字拼音首字母,这里就不讨论了,可以用通过字库,也可以通过判断汉字内码的方式。
需要请教各位的是,如果是多音字,该如何获取一段句子的首字母?
比如“任长霞”,要返回二个结果:
RCX
RZX
更复杂的“任长呆”,两个多音字,就要返回:
RCD
RZD
RCA
RZA这个如何通过算法实现?
解决方案 »
- qreport的问题
- 请问如何用Delphi程序在Internet选项中->安全->受信任的站点中加入一个网站?
- 如何发布delphi应用程序
- 兄长可有 FastReport 的《中文使用指南》? 可以发给我吗
- 所谓的高素质人才也就是这样的素质!
- adoquery1.SQL.Add(sql)中sql的语句表名是参数如何写SQL语句?????~~~~~
- 哪位高手能说说怎么优化SQLServer的性能吗?我。。。
- 简单的调试问题,请大家指点
- 如何检测一PCHAR类型的字符串中,以*号隔开的数据啊?
- 一个菜菜问题:如何得到当前工程(或.exe文件)所在的路径?
- 用ADOQuery判断用户登录,
- 请问set nocount off 和 set nocount on 有什么用
var
i:integer;
hz:string;
begin
edit2.Text:='';
for i:=1 to Length(edit1.Text) div 2 do
begin
hz:=Copy(edit1.Text,i*2-1,2);
edit2.Text:=edit2.Text+getpy(hz);
end;
end;function TForm1.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';
$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';
$D189..$D4D0:result:='Y';
$D4D1..$D7F9:result:='Z';
else
result:=char(32);
end;
end;
首先它只能处理GB2312种一区的三千多字,其次她不支持多音字。ms的字符影射表能非常好的显示出汉字的拼音,包括多音字,我不知道他怎么得到的。
我能想到的办法就是查表法,通过拼音输入法转出来一个汉字和拼音的对照表,然后自己写程序查表。
,对于多音字,我想你在遍历时可以取出后面全部字符,如果多余一个,就做个循环,一个一个返回,让用户自己选
“楼上的代码我想他自己都没试过。”
你没看清我写了测试通过吗,这就是从delphi里拷贝出来的。恐怕是你自己没试过吧,你都3颗星拉,该注意下形象,说话要负责任的。to j54772091(风) ( ) 信誉:100
你说的有道理,我也发现了处理的字符太少这个问题了,还要求显示多音字看来只有遍历词库拉
题目你都没看清,就急急忙忙的贴出来代码JF,我说的还错了吗?你这个代码在csdn上面提出来过无数次,也无数人说过这个代码的局限性,我不知道你怎么测试的,可能你理解的测试通过和我理解的不同。起码gb2312中接近一大半的汉字你得不到他的声母,因为二级字库是按照部首排序的。所以说这个代码在实际是没办法适用的。
2. 写了个程序剔出了其中的词,重新排列了汉字和拼音
3. 因为gbk的编码不是完全连续的,所以采用了折半查找(这就是我愚蠢的地方),
4. 提供了汉字到拼音和拼音到汉字的函数针对问题三,我事后想了一下,完全可以利用查表的方式实现,其中的断码也没多少,如果采用查表,它的时间复杂度就从O(lg2n) 降到O(0)了。因为当时这个功能不是关键,之后也就没重写。