java之后,重新抄刀PB,游刃有余!

经过2年的java项目,本来已经想放弃pb了,由于原因,就又开始了pb。不过这次pb上手之后,感觉做东西真是游刃有余,原来的mvc思想用到pb上面太方便了,现在的pb项目,就是做类,作函数方法,封装,重用,一切都很顺利,下面,我将把自己这段pb用到的思想和方法一一贴出,以求对所需的朋友有所帮助。

------------

1、汉字 -> 拼音

 

  //xuejun,     19990821  
  //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[QQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYYDYJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZKHHGFLBCSMDLDGDZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYGCTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZGSZZQLYLWTJPFSYASMCJBTZKYCWMYTCSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQFHBSAQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJ***QASLDCYXYQDLQCAFYWYXQHZ"  
   
  //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   的声母串  
   

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值