标题: 怎样从中文姓名提取首字母 [打印本页] 作者: shiyiming 时间: 2009-12-28 20:13 标题: 怎样从中文姓名提取首字母 我想要提取姓名的首字母。比如:
“张三”要变成“zs”。各位大侠。
这个在sas中有没有办法实现?
感谢shiyiming 与vicky1020 的帮助。我还想问一下如果按照vicky1020 的方法则需知道分别以二十六个字母开头的第一个汉字是什么。而有人说vicky1020 的标准汉字选择有错误,那该选择那些汉字作为标准汉字?还有电脑内部汉字编码存储排序的方式是什么?
是国标还是Unicode?shiyiming给出的标准汉字的编码显示是四位十六进制,但究竟是什么编码?各个数代表的是哪个汉字。我十分的不解。
再有各个好心的牛人给出的都是取首字母的方法。怎样取拼音呢?且每个字拼音之间用-连接。
再次感谢各位大牛的热心帮助。再次拜托了作者: shiyiming 时间: 2009-12-30 16:18 标题: 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]作者: shiyiming 时间: 2010-1-5 15:43 标题: Re: 怎样从中文姓名提取首字母 Could be more detail? thanks!作者: Qiong 时间: 2010-1-8 17:21 标题: 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;