相关文章
pb中取汉字串首字符的一个函数-数据库专栏,其他相关
2024-12-03 23:32

今天看到xuejun的一个取汉字首字符的函数,试用了一下,感觉很好用,不敢独享,拿出来跟大家分享:

$pbexportheader$uf_getfirstletter.srf
$pbexportcomments$ 返回给定汉字串的首字母串,  xuejun , 19990821
global type uf_getfirstletter from function_object
end type

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

global function string uf_getfirstletter (string as_inputstring);//function name  :  uf_getfirstletter
//used to              :  返回给定汉字串的首字母串,即声母串
//input arguments:  as_inputstring – string , 给定的汉字串
//return value    :  ls_returnstring – string , 给定的汉字串的声母串,一律为小写
//notice                :  1. 此方法基于汉字的国标汉字库区位编码的有效性,不符合此编码的
//                                  系统此函数无效!
//                              2. 若汉字串含有非汉字字符,如图形符号或ascii码,则这些非汉字字符
//                                  将保持不变.
//sample              :  ls_rtn =  uf_getfirstletter(“中华人民共和国”)
//                              ls_rtn will be : zhrmghg

//scripts:
char      lc_firstletter[23]            //存放国标一级汉字不同读音的起始区位码对应读音
string    ls_ch                                //临时单元
string    ls_secondsectable        //存放所有国标二级汉字读音
string    ls_returnstr                  //返回串
integer  li_secposvalue[23]        //存放国标一级汉字不同读音的起始区位码
integer  i , j
integer  li_sectorcode                //汉字区码
integer  li_positioncode              //汉字位码
integer  li_secposcode              //汉字区位码
integer  li_offset                          //二级字库偏移量

//set initial value
li_secposvalue[]={1601,1637,1833,2078,2274,2302,2433,2594,2787,3106,3212,3472,3635,3722,3730,3858,4027,4086,4390,4558,4684,4925,5249 }
lc_firstletter[]  = {“a”, “b”,”c”,”d”,”e”,”f”,”g”,”h”,”j”,”k”,”l”,”m”,”n”,”o”,”p”,”q”,”r”,”s”,”t”,”w”,”x”,”y”,”z”}
ls_secondsectable=”cjwgnspgcgne[y[btyyzdxykygt[jnnjqmbsgzscyjsyy[pgkbzgy[ywjkgkljywkpjqhy[w[dzlsgmrypywwcckznkyygttnjjnykkzytcjnmcylqlypyqfqrpzslwbtgkjfyxjwzltbncxjjjjtxdttsqzycdxxhgck[phffss[ybgxlppbyll[hlxs[zm[jhsojnghdzqyklgjhsgqzhxqgkezzwyscscjxyeyxadzpmdssmzjzqjyzc[j[wqjbyzpxgznzcpwhkxhqkmwfbpbydtjzzkqhylygxfptyjyyzpszlfchmqshgmxxsxj[[dcsbbqbefsjyhxwgzkpylqbgldlcctnmayddkssngycsgxlyzaybnptsdkdylhgymylcxpy[jndqjwxqxfyyfjlejpzrxccqwqqsbnkymgplbmjrqcflnymyqmsqyrbcjthztqfrxqhxmjjcjlxqgjmshzkbswyemyltxfsydswlycjqxsjnqbsctyhbftdcyzdjwyghqfrxwckqkxebptlpxjzsrmebwhjlbjslyysmdxlclqkxlhxjrzjmfqhxhwywsbhtrxxglhqhfnm[ykldyxzpylgg[mtcfpajjzyljtyanjgbjplqgdzyqyaxbkysecjsznslyzhsxlzcghpxzhznytdsbcjkdlzayfmydlebbgqyzkxgldndnyskjshdlyxbcghxypkdjmmzngmmclgwzszxzjfznmlzzthcsydbdllscddnlkjykjsycjlkwhqasdknhcsganhdaashtcplcpqybsdmpjlpzjoqlcdhjjysprchn[nnlhlyyqyhwzptczgwwmzffjqqqqyxaclbhkdjxdgmmydjxzllsygxgkjrywzwyclzmssjzldbyd[fcxyhlxchyzjq[[qagmnyxpfrkssbjlyxysyglnscmhzwwmnzjjlxxhchsy[[ttxrycyxbyhcsmxjsznpwgpxxtaybgajcxly[dccwzocwkccsbnhcpdyznfcyytyckxkybsqkkytqqxfcwchcykelzqbsqyjqcclmthsywhmktlkjlycxwheqqhtqh[pq[qscfymndmgbwhwlgsllysdlmlxpthmjhwljzyhzjxhtxjlhxrswlwzjcbxmhzqxsdzpmgfcsglsxymjshxpjxwmyqksmyplrthbxftpmhyxlchlhlzylxgsssstclsldclrpbhzhxyyfhb[gdmycnqqwlqhjj[ywjzyejjdhpblqxtqkwhlchqxagtlxljxmsl[htzkzjecxjcjnmfby[sfywybjzgnysdzsqyrsljpclpwxsdwejbjcbcnaytwgmpapclyqpclzxsbnmsggfnzjjbzsfzyndxhplqkzczwalsbccjx[yzgwkypsgxfzfcdkhjgxdlqfsgdslqwzkxtmhsbgzmjzrglyjbpmlmsxlzjqqhzyjczydjwbmyklddpmjegxyhylxhlqyqhkycwcjmyyxnatjhyccxzpcqlbzwwytwbqcmlpmyrjcccxfpznzzljplxxyztzlgdldcklyrzzgqtgjhhgjljaxfgfjzslcfdqzlclgjdjcsnzlljpjqdcclcjxmyzftsxgcgsbrzxjqqctzhgyqtjqqlzxjylylbcyamcstylpdjbyregklzyzhlyszqlznwczcllwjqjjjkdgjzolbbzppglghtgzxyghzmycnqsycyhbhgxkamtxyxnbskyzzgjzlqjdfcjxdygjqjjpmgwgjjjpkqsbgbmmcjssclpqpdxcdyyky[cjddyygywrhjrtgznyqldkljszzgzqzjgdykshpzmtlcpwnjafyzdjcnmwescyglbtzcgmssllyxqsxsbsjsbbsgghfjlypmzjnlyywdqshzxtyywhmzyhywdbxbtlmsyyyfsxjc[dxxlhjhf[sxzqhfzmzcztqcxzxrttdjhnnyzqqmnqdmmg[ydxmjgdhcdyzbffallztdltfxmxqzdngwqdbdczjdxbzgsqqddjcmbkzffxmkdmdsyyszcmljdsynsbrskmkmpcklgdbqtfzswtfgglyplljzhgj[gypzltcsmcnbtjbqfkthbyzgkpbbymtdssxtbnpdkleycjnyddykzddhqhsdzsctarlltkzlgecllkjlqjaqnbdkkghpjtzqksecshalqfmmgjnlyjbbtmlyzxdcjpldlpcqdhzycbzsczbzmsljflkrzjsnfrgjhxpdhyjybzgdlqcsezgxlblgyxtwmabchecmwyjyzlljjyhlg[djlslygkdzpzxjyyzlwcxszfgwyydlyhcljscmbjhblyzlycblydpdqysxqzbytdkyxjy[cnrjmpdjgklcljbctbjddbblblczqrppxjcjlzcshltoljnmdddlngkaqhqhjgykheznmshrp[qqjchgmfprxhjgdychghlyrzqlcyqjnzsqtkqjymszswlcfqqqxyfggyptqwlmcrnfkkfsyylqbmqammmyxctpshcptxxzzsmphpshmclmldqfyqxszyydyjzzhqpdszglstjbckbxyqzjsgpsxqzqzrqtbdkyxzkhhgflbcsmdldgdzdblzyycxnncsybzbfglzzxswmsccmqnjqsbdqsjtxxmbltxzclzshzcxrqjgjylxzfjphymzqqydfqjjlzznzjcdgzygctxmzysctlkphtxhtlbjxjlxscdqxcbbtjfqzfsltjbtkqbxxjjljchczdbzjdczjdcprnpqcjpfczlclzxzdmxmphjsgzgszzqlylwtjpfsyasmcjbtzkycwmytcsjjljcqlwzmalbxyfbpnlsfhtgjwejjxxglljstgshjqlzfkcgnnnszfdeqfhbsaqtgylbxmmygszldydqmjjrgbjtkgdhgkblqkbdmbylxwcxyttybkmrtjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhz

//get it !
ls_returnstr = ”   
for i=1 to len(as_inputstring)                //依次处理as_inputstring中每个字符
    ls_ch=mid(as_inputstring , i , 1)     
      if asc(ls_ch)<128  then                      //  非汉字
          ls_returnstr = ls_returnstr+ls_ch    //  不变
      else                                                    //  是汉字
          ls_ch = mid(as_inputstring , i , 2)        // 取出此汉字
          li_sectorcode = asc(left(ls_ch, 1)) – 160        //区码
          li_positioncode = asc(right(ls_ch, 1)) – 160  //位码
          li_secposcode = li_sectorcode*100 +  li_positioncode            // 区位码
          if li_secposcode>1600  and  li_secposcode<5590  then        //  第一个字符
              for j=23 to 1 step -1              // 找声母
                  if li_secposcode>=li_secposvalue[j] then
                        ls_returnstr = ls_returnstr +  lc_firstletter[j]
                        exit
                  end if
              next
          else                                              //  第一个字符
              li_offset = (li_sectorcode – 56 ) *94 + li_positioncode – 1      // 计算偏移量
              if li_offset>=0  and li_offset<=3007      then                            //二区汉字
                  ls_returnstr = ls_returnstr + mid(ls_secondsectable, li_offset , 1)      //取出此字声母
              end if
          end if
          i = i+1                  //    指向下一个汉字
    end if
next                              // 处理完毕

//return result
return    lower( ls_returnstr )                //返回 as_inputstring 的声母串

    以上就是本篇文章【pb中取汉字串首字符的一个函数-数据库专栏,其他相关】的全部内容了,欢迎阅览 ! 文章地址:http://sjzytwl.xhstdz.com/news/9964.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://sjzytwl.xhstdz.com/mobile/ , 查看更多   
最新文章
正在阅读:猎豹免费WiFi面世!猎豹免费WiFi使用教程猎豹免费WiFi面世!猎豹免费WiFi使用教程猎豹免费wifi手机版「正在阅读:猎豹免费WiFi面世!猎豹免费WiFi使用教程猎豹免费WiFi面
  近日,猎豹推出了一款全新的WiFi共享软件猎豹免费WiFi,不过猎豹免费WiFi目前还处于内测阶段,需要体验的用户要移步到猎豹官
电脑c盘满了怎么清理,快速清理,用这5招手机磁盘空间不足怎么清理「电脑c盘满了怎么清理,快速清理,用这5招」
​新买的电脑没用多久,突然发现系统提示磁盘空间不足。点击一看,电脑c盘空间已经爆满变红。当出现这种情况时ÿ
CDR,提取内容如何提取?手机如何打开exe文件「CDR,提取内容如何提取?」
1、首先在cdr软件中打开cdr图片;2、选中文字,依次点击“位图”-“轮廓描摹”-“线条图”;3、弹出弹窗,设置要删除的指定颜色
诺基亚光充电手机上市 可用屏幕吸收太阳能太阳能手机「诺基亚光充电手机上市 可用屏幕吸收太阳能」
继无线充电、PureView拍照技术之后,诺基亚的又一项智能手机领域的新发明即将问世,据外媒报道,这家芬兰手机制造商将在今年正式
麦芒手机怎么样华为麦芒手机「麦芒手机怎么样」
要了解华为麦芒系列的手机表现,麦芒8无疑是值得考虑的一个选项。这款手机在多个方面展现出卓越性能,以下是它的主要特点: 屏幕
90%的人有手机幻听综合症手机综合症「90%的人有手机幻听综合症」
Many of us have reached in our pockets, feeling a vibration, wrongly believing our mobile phones have just rung.许多人都
2021年一千元左右最好的手机有哪些?2021年千元以内性价比手机排行?一千元左右的华为手机「2021年一千元左右最好的手机有哪些?2021年千元以内性价比手机排行?」
2021年一千元左右最好的手机有哪些?~推荐华为畅享10 全网通 4GB+64GB,华为商城在售价格1099元,手机产品属于快消电子产品,华
上海专业 ***回收废纸废纸箱 服务一条龙带人带车上门回收上海手机回收「上海专业 ***回收废纸废纸箱 服务一条龙带人带车上门回收」
企业类型有限责任公司(自然人独资)统一社会信用代码91310112MA1GDTXT00成立日期2020-11-20法定代表人/负责人张前注册资本2,000万
传祺M8值得入手 起步加速很给力m8手机「传祺M8值得入手 起步加速很给力」
首先,外形方面这款传祺GM8采用了眼前一亮的设计语言。总体而言,新一代传祺GM8的盾形前脸变得更加稳重,并且在发动机盖增加一些
假面骑士零一模拟器(Zero-One Driver)假面骑士游戏手机版「假面骑士零一模拟器(Zero-One Driver)」
假面骑士零一模拟器,现在就成为超酷超炫的假面骑士01吧~!这是一款可以将你周遭的一切都切换成假面骑士世界要素的模拟器游戏!将0
相关文章