SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2120|回复: 11
打印 上一主题 下一主题

怎样从中文姓名提取首字母

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-12-28 20:13:35 | 只看该作者

怎样从中文姓名提取首字母

我想要提取姓名的首字母。比如:
“张三”要变成“zs”。各位大侠。
这个在sas中有没有办法实现?
感谢shiyiming 与vicky1020 的帮助。我还想问一下如果按照vicky1020 的方法则需知道分别以二十六个字母开头的第一个汉字是什么。而有人说vicky1020 的标准汉字选择有错误,那该选择那些汉字作为标准汉字?还有电脑内部汉字编码存储排序的方式是什么?
是国标还是Unicode?shiyiming给出的标准汉字的编码显示是四位十六进制,但究竟是什么编码?各个数代表的是哪个汉字。我十分的不解。
再有各个好心的牛人给出的都是取首字母的方法。怎样取拼音呢?且每个字拼音之间用-连接。
再次感谢各位大牛的热心帮助。再次拜托了
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-12-30 16:18:33 | 只看该作者

Re: 怎样从中文姓名提取首字母

个人倾向于用24个标准汉字作为cut off来计算拼音字母。伪代码如下。
[code:21kwevdz]if (i < 0xB0C5) return "a";
if (i < 0xB2C1) return "b";
if (i < 0xB4EE) return "c";
if (i < 0xB6EA) return "d";
if (i < 0xB7A2) return "e";
if (i < 0xB8C1) return "f";
if (i < 0xB9FE) return "g";
if (i < 0xBBF7) return "h";
if (i < 0xBFA6) return "j";
if (i < 0xC0AC) return "k";
if (i < 0xC2E8) return "l";
if (i < 0xC4C3) return "m";
if (i < 0xC5B6) return "n";
if (i < 0xC5BE) return "o";
if (i < 0xC6DA) return "p";
if (i < 0xC8BB) return "q";
if (i < 0xC8F6) return "r";
if (i < 0xCBFA) return "s";
if (i < 0xCDDA) return "t";
if (i < 0xCEF4) return "w";
if (i < 0xD1B9) return "x";
if (i < 0xD4D1) return "y";
if (i < 0xD7FA) return "z";[/code:21kwevdz]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-1-5 15:43:59 | 只看该作者

Re: 怎样从中文姓名提取首字母

Could be more detail? thanks!
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
地板
发表于 2010-1-8 17:21:12 | 只看该作者

Re: 怎样从中文姓名提取首字母

依照大牛的逻辑:
[code:3awm9j67]
data  chin ;        
     input name $20. ;   
   cards;
        阿三
        欧阳仔仔
    小明
;
run;

%macro a();
                  shouxie='a';
          if zi>='八 ' then shouxie='b ';
          if zi>='才 ' then shouxie='c ';
          if zi>='大 ' then shouxie='d ';
          if zi>='额 ' then shouxie='e ';
          if zi>='发 ' then shouxie='f ';
          if zi>='嘎 ' then shouxie='g ';
          if zi>='哈 ' then shouxie='h ';
          if zi>='及 ' then shouxie='j ';
          if zi>='卡 ' then shouxie='k ';
          if zi>='拉 ' then shouxie='l ';
          if zi>='马 ' then shouxie='m ';
          if zi>='那 ' then shouxie='n ';
          if zi>='哦 ' then shouxie='o ';
          if zi>='怕 ' then shouxie='p ';
          if zi>='其 ' then shouxie='q ';
          if zi>='热 ' then shouxie='r ';
          if zi>='萨 ' then shouxie='s ';
          if zi>='他 ' then shouxie='t ';
          if zi>='哇 ' then shouxie='w ';
          if zi>='西 ' then shouxie='x ';
          if zi>='呀 ' then shouxie='y ';
          if zi>='咋 ' then shouxie='z ';                  
eng=compress(eng||shouxie);
i=i+2;
%mend a;

data eng;
set chin;
length eng $4;
eng="";
i=1;
zi=substr(name,i,2);
do while(compress(zi)~="");
%a;
zi=substr(name,i,2);
end;
keep name eng;
run;
[/code:3awm9j67]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-1-11 12:31:39 | 只看该作者

Re: 怎样从中文姓名提取首字母

who是“大牛”?不要告诉我暗指我哦。我可绝对不是。我只是维护论坛运行的技术工罢了。 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
6#
发表于 2010-1-12 13:53:20 | 只看该作者

Re: 怎样从中文姓名提取首字母

idea是王道~~
程序有错误,应该用一声的字做标准字,否则会出错~~~
懒得改了。。。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2010-1-17 15:06:11 | 只看该作者

Re: 怎样从中文姓名提取首字母

多音字,也是个麻烦的事情。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2010-1-17 23:23:53 | 只看该作者

Re: 怎样从中文姓名提取首字母

多音字?对哦,没想到过。的确很麻烦。
这让我想起在日本的做过的一个项目。客户非要要求按照和历编年来制作报表和储存数据,即昭和XX年,平成XX年。TNND,为了这个还得专门搞个lookup table。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2010-1-20 19:12:54 | 只看该作者

Re: 怎样从中文姓名提取首字母

那再问一下各位大侠如果是取汉字的拼音该怎么办呢。如张三要返回“zhang san”
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2010-1-20 19:20:27 | 只看该作者

Re: 怎样从中文姓名提取首字母

十分感谢各位大侠的帮助。特别是shiyiming 与vicky1020 。太牛了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-6 11:24 , Processed in 0.074958 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表