怎么提取出把汉字的拼音首字母

时间:2022-12-30 08:01:17
powerbuilder9.0中 怎么提取出一组汉字的拼音首字母 大写的 。最好有代码 说说思想,多谢大家

6 个解决方案

#1


$PBExportHeader$f_chnpy.srf
$PBExportComments$Export By Shu<KenShu@163.net>
global type f_chnpy from function_object
end type

forward prototypes
global function string  f_chnpy (string as_inputstring)
end prototypes

global function string  f_chnpy (string as_inputstring);//Public function f_chnpy (string as_inputstring) returns string 
//string as_inputstring
long i
string ls_ch
string ls_returnstr


FOR i = 1 TO len(as_inputstring) //0
ls_ch = mid(as_inputstring,i,1)
IF asc(ls_ch) < 128 THEN //2
ls_returnstr = ls_returnstr + ls_ch
CONTINUE
END IF //2
ls_ch = mid(as_inputstring,i,2)
CHOOSE CASE ls_ch //6
CASE IS >= "匝" //6
ls_returnstr = ls_returnstr + "Z"
CASE IS >= "丫" //6
ls_returnstr = ls_returnstr + "Y"
CASE IS >= "夕" //6
ls_returnstr = ls_returnstr + "X"
CASE IS >= "哇" //6
ls_returnstr = ls_returnstr + "W"
CASE IS >= "他" //6
ls_returnstr = ls_returnstr + "T"
CASE IS >= "撒" //6
ls_returnstr = ls_returnstr + "S"
CASE IS >= "然" //6
ls_returnstr = ls_returnstr + "R"
CASE IS >= "七" //6
ls_returnstr = ls_returnstr + "Q"
CASE IS >= "趴" //6
ls_returnstr = ls_returnstr + "P"
CASE IS >= "哦" //6
ls_returnstr = ls_returnstr + "O"
CASE IS >= "拿" //6
ls_returnstr = ls_returnstr + "N"
CASE IS >= "妈" //6
ls_returnstr = ls_returnstr + "M"
CASE IS >= "廓" //6
ls_returnstr = ls_returnstr + "L"
CASE IS >= "咖" //6
ls_returnstr = ls_returnstr + "K"
CASE IS >= "讥" //6
ls_returnstr = ls_returnstr + "J"
CASE IS >= "哈" //6
ls_returnstr = ls_returnstr + "H"
CASE IS >= "嘎" //6
ls_returnstr = ls_returnstr + "G"
CASE IS >= "发" //6
ls_returnstr = ls_returnstr + "F"
CASE IS >= "讹" //6
ls_returnstr = ls_returnstr + "E"
CASE IS >= "搭" //6
ls_returnstr = ls_returnstr + "D"
CASE IS >= "擦" //6
ls_returnstr = ls_returnstr + "C"
CASE IS >= "八" //6
ls_returnstr = ls_returnstr + "B"
CASE IS >= "阿" //6
ls_returnstr = ls_returnstr + "A"
END CHOOSE //6
i = i + 1
NEXT //0
RETURN ls_returnstr

end function

#2


上面代码虽然可以获取汉字拼音首字母,但个别汉字首字母有问题

建议采用汉字拼音字母库或专用DLL方法获取
汉字拼音五笔编码库(四角)汉字首字母
http://download.csdn.net/source/1268945



http://www.shuct.net/
ShuChinese.dll 汉字转换的DLL,附PB调用范例.可以做"汉字->拼音"的转换(全部拼音或拼音首字,支持多音字);GB码下 "简体字<->繁体字" 转换;"GB码<->BIG5码"转换;"ANSIC<->Unicode"转换 

#3


ShuChinese.dll 是下载了,怎么没找见实例啊

#4


楼主只需要将uo_shu_chinese.sru导入,在about中有使用说明

//CopyRight 2001 - 2007 Shu<Kenshu@163.net>
//欢迎访问 www.shuct.net 获取更多软件.

string ls_swap
ls_swap = space(64)
AboutShuChinese(ls_swap)
Messagebox("About ShuChinese",ls_swap)

//说明

//全部函数都可以有中英文数字或标点

//1.留意 "繁体<->简体" 和 "GB<->BIG5" 是完全不同的概念,许多用PB的人分不清,PB是傻瓜化的语言,可并非只有傻瓜才用.^-^

//"繁体<->简体",大家都在GB码里转来转去,都是在简体WINDOWS下显示,用于给不习惯看简体字的人看
//实际上是多对多的关系,如"回"字的四种写法"囬廻廽迴"
//转为简体时均变为"回",但"回"转为简体时只转换为"囬"
//(我初中时就懂这4种写法了,孔乙己?后来通读了整本<现代汉语词典>,老师说我有病,愤而弃笔从戎,改读理科.大学毕业找不到工作,只好改当程序员.)

//"GB<->BIG5",是在不同的内码系统中转换,主要用于数据交换.
//我也用过它来将简体程序的代码批量转成繁体的程序的代码,它也是多对多的关系

//2.多音字转换,实际上也是多对多的关系,如"便宜"可以读"BianYi"("请便宜行事"),也可以读"PianYi"("这东西真便宜")
//这事道理上需要一个巨大的数据库和大规模的语法分析,我只取了常见的读音,因为还要兼顾速度上的考虑,基本上都可以满足了,上面是取后面的.
//同样的例子还有"给予,大夫,同行......"

//我纯粹用VC 做 汉字->拼单 转换(不需要多次内存申请),10万汉字的文章需要8到9秒钟
//(注意,100万汉字汉字的转换远不止100秒,因为算法上未经大规模数据处理时内存颠簸的优化)


/*DEMO
uo_shu_chinese luo_chinese
string ls_source

messagebox('汉字转拼音',luo_chinese.uf_hz_2_py("重庆重要"))

messagebox('汉字取拼音首位',luo_chinese.uf_hz_2_first_py("重庆重要"))

messagebox('简体转繁体',luo_chinese.uf_jt_2_ft("*"))

messagebox('繁体转简体',luo_chinese.uf_ft_2_jt("中華人民共和國"))



ls_source = "*"
ls_source = luo_chinese.uf_gb_2_big5(ls_source)
messagebox('国标转BIG5码',ls_source)

ls_source = luo_chinese.uf_big5_2_gb(ls_source)
messagebox('BIG5码转国标',ls_source)

blob lb_test
lb_test = luo_chinese.uf_ansic_2_unicode(ls_source)//lb_test需要以二进制的方式显示,如写在一个磁盘文件上.
ls_source = luo_chinese.uf_unicode_2_ansic(lb_test)
messagebox('Aisic->Unicode->Anisc',ls_source)
*/

#5


我做了一个示例仅需要的朋友参考

pb 汉字取拼音 繁简转换 内码转换 pb9

http://download.csdn.net/source/2991007

怎么提取出把汉字的拼音首字母

#6


不错 很好用,但是我没找到 提取拼音首字母大写的方法  就用upper()在转了一遍,呵呵 多谢 牛人
马上结贴 

#1


$PBExportHeader$f_chnpy.srf
$PBExportComments$Export By Shu<KenShu@163.net>
global type f_chnpy from function_object
end type

forward prototypes
global function string  f_chnpy (string as_inputstring)
end prototypes

global function string  f_chnpy (string as_inputstring);//Public function f_chnpy (string as_inputstring) returns string 
//string as_inputstring
long i
string ls_ch
string ls_returnstr


FOR i = 1 TO len(as_inputstring) //0
ls_ch = mid(as_inputstring,i,1)
IF asc(ls_ch) < 128 THEN //2
ls_returnstr = ls_returnstr + ls_ch
CONTINUE
END IF //2
ls_ch = mid(as_inputstring,i,2)
CHOOSE CASE ls_ch //6
CASE IS >= "匝" //6
ls_returnstr = ls_returnstr + "Z"
CASE IS >= "丫" //6
ls_returnstr = ls_returnstr + "Y"
CASE IS >= "夕" //6
ls_returnstr = ls_returnstr + "X"
CASE IS >= "哇" //6
ls_returnstr = ls_returnstr + "W"
CASE IS >= "他" //6
ls_returnstr = ls_returnstr + "T"
CASE IS >= "撒" //6
ls_returnstr = ls_returnstr + "S"
CASE IS >= "然" //6
ls_returnstr = ls_returnstr + "R"
CASE IS >= "七" //6
ls_returnstr = ls_returnstr + "Q"
CASE IS >= "趴" //6
ls_returnstr = ls_returnstr + "P"
CASE IS >= "哦" //6
ls_returnstr = ls_returnstr + "O"
CASE IS >= "拿" //6
ls_returnstr = ls_returnstr + "N"
CASE IS >= "妈" //6
ls_returnstr = ls_returnstr + "M"
CASE IS >= "廓" //6
ls_returnstr = ls_returnstr + "L"
CASE IS >= "咖" //6
ls_returnstr = ls_returnstr + "K"
CASE IS >= "讥" //6
ls_returnstr = ls_returnstr + "J"
CASE IS >= "哈" //6
ls_returnstr = ls_returnstr + "H"
CASE IS >= "嘎" //6
ls_returnstr = ls_returnstr + "G"
CASE IS >= "发" //6
ls_returnstr = ls_returnstr + "F"
CASE IS >= "讹" //6
ls_returnstr = ls_returnstr + "E"
CASE IS >= "搭" //6
ls_returnstr = ls_returnstr + "D"
CASE IS >= "擦" //6
ls_returnstr = ls_returnstr + "C"
CASE IS >= "八" //6
ls_returnstr = ls_returnstr + "B"
CASE IS >= "阿" //6
ls_returnstr = ls_returnstr + "A"
END CHOOSE //6
i = i + 1
NEXT //0
RETURN ls_returnstr

end function

#2


上面代码虽然可以获取汉字拼音首字母,但个别汉字首字母有问题

建议采用汉字拼音字母库或专用DLL方法获取
汉字拼音五笔编码库(四角)汉字首字母
http://download.csdn.net/source/1268945



http://www.shuct.net/
ShuChinese.dll 汉字转换的DLL,附PB调用范例.可以做"汉字->拼音"的转换(全部拼音或拼音首字,支持多音字);GB码下 "简体字<->繁体字" 转换;"GB码<->BIG5码"转换;"ANSIC<->Unicode"转换 

#3


ShuChinese.dll 是下载了,怎么没找见实例啊

#4


楼主只需要将uo_shu_chinese.sru导入,在about中有使用说明

//CopyRight 2001 - 2007 Shu<Kenshu@163.net>
//欢迎访问 www.shuct.net 获取更多软件.

string ls_swap
ls_swap = space(64)
AboutShuChinese(ls_swap)
Messagebox("About ShuChinese",ls_swap)

//说明

//全部函数都可以有中英文数字或标点

//1.留意 "繁体<->简体" 和 "GB<->BIG5" 是完全不同的概念,许多用PB的人分不清,PB是傻瓜化的语言,可并非只有傻瓜才用.^-^

//"繁体<->简体",大家都在GB码里转来转去,都是在简体WINDOWS下显示,用于给不习惯看简体字的人看
//实际上是多对多的关系,如"回"字的四种写法"囬廻廽迴"
//转为简体时均变为"回",但"回"转为简体时只转换为"囬"
//(我初中时就懂这4种写法了,孔乙己?后来通读了整本<现代汉语词典>,老师说我有病,愤而弃笔从戎,改读理科.大学毕业找不到工作,只好改当程序员.)

//"GB<->BIG5",是在不同的内码系统中转换,主要用于数据交换.
//我也用过它来将简体程序的代码批量转成繁体的程序的代码,它也是多对多的关系

//2.多音字转换,实际上也是多对多的关系,如"便宜"可以读"BianYi"("请便宜行事"),也可以读"PianYi"("这东西真便宜")
//这事道理上需要一个巨大的数据库和大规模的语法分析,我只取了常见的读音,因为还要兼顾速度上的考虑,基本上都可以满足了,上面是取后面的.
//同样的例子还有"给予,大夫,同行......"

//我纯粹用VC 做 汉字->拼单 转换(不需要多次内存申请),10万汉字的文章需要8到9秒钟
//(注意,100万汉字汉字的转换远不止100秒,因为算法上未经大规模数据处理时内存颠簸的优化)


/*DEMO
uo_shu_chinese luo_chinese
string ls_source

messagebox('汉字转拼音',luo_chinese.uf_hz_2_py("重庆重要"))

messagebox('汉字取拼音首位',luo_chinese.uf_hz_2_first_py("重庆重要"))

messagebox('简体转繁体',luo_chinese.uf_jt_2_ft("*"))

messagebox('繁体转简体',luo_chinese.uf_ft_2_jt("中華人民共和國"))



ls_source = "*"
ls_source = luo_chinese.uf_gb_2_big5(ls_source)
messagebox('国标转BIG5码',ls_source)

ls_source = luo_chinese.uf_big5_2_gb(ls_source)
messagebox('BIG5码转国标',ls_source)

blob lb_test
lb_test = luo_chinese.uf_ansic_2_unicode(ls_source)//lb_test需要以二进制的方式显示,如写在一个磁盘文件上.
ls_source = luo_chinese.uf_unicode_2_ansic(lb_test)
messagebox('Aisic->Unicode->Anisc',ls_source)
*/

#5


我做了一个示例仅需要的朋友参考

pb 汉字取拼音 繁简转换 内码转换 pb9

http://download.csdn.net/source/2991007

怎么提取出把汉字的拼音首字母

#6


不错 很好用,但是我没找到 提取拼音首字母大写的方法  就用upper()在转了一遍,呵呵 多谢 牛人
马上结贴