如何把一个汉字字符串的拼音首字母全部取出来?例如:'新闻频道'得到'xwpd'

qyc0921 2003-07-08 04:47:06
如何把一个汉字字符串的拼音首字母全部取出来?例如:'新闻频道'得到'xwpd'
...全文
102 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjff2000 2003-07-08
  • 打赏
  • 举报
回复
严重同意 lovelymelon(小人物)的程序。
cxz7531 2003-07-08
  • 打赏
  • 举报
回复
最可靠的方法是“大耳朵 汉字拼音对照表”,这个表的用法是:

对于一个两字节的GB码汉字,设这两个字节的无符号整数值分别为first
和second,则可以在距文件头place字节处找到该汉字及其带声调拼音.

place = ( (first - 161) * 94 + (second - 161) ) * 10 + 1596

表中每行共计10个字节,头两个字节为GB码汉字或符号,后2至7个字节为该
汉字对应的拼音及其音调.轻声用5表示.之后为5至0个空格.最后一个字节
为换行符(\n).
我用过,很方便
AustinLei 2003-07-08
  • 打赏
  • 举报
回复
lovelymelon(小人物) 的方法有问题,请看:
s:=getpy('喆');
showmessage(s);
结果对话框中什么也没有。
myling 2003-07-08
  • 打赏
  • 举报
回复
类似的贴子很多,搜搜以前的贴子就行了
tccb 2003-07-08
  • 打赏
  • 举报
回复
一级字库可以,二级字库有问题,根本解决的方法是建立对照表。
lovelymelon 2003-07-08
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function getpy(hzchar:string):char;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

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';
$B9C1..$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(0);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=getpy('新')+getpy('闻')+getpy('频')+getpy('道');
showmessage(s);
end;

end.
jun_01 2003-07-08
  • 打赏
  • 举报
回复
好象判断汉字在区位码中的位置就可以了。

多音字可能会有问题。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧