在一个文本内输入中文,另一文本显示该中文的拼音首字母!
请高手解答!

解决方案 »

  1.   

    这是以前borland C++用过的函数,你可以改成C#试试
    AnsiString __fastcall GetPY(AnsiString AString)
    {
      //scripts:
      //存放国标一级汉字不同读音的起始区位码对应读音
      char      lc_firstletter[23] = {'a', 'b','c','d','e','f','g','h','j','k','l','m','n',
    'o','p','q','r','s','t','w','x','y','z'} ;
      AnsiString    ls_ch ;             //临时单元
      AnsiString    ls_secondsectable ; //存放所有国标二级汉字读音
      AnsiString    ls_returnstr ;      //返回串
      //存放国标一级汉字不同读音的起始区位码
      int  li_secposvalues[23] = {1601,1637,1833,2078,2274,2302,2433,2594,2787,
    3106,3212,3472,3635,
    3722,3730,3858,4027,4086,4390,4558,4684,4925,5249 } ;
      int  i , j ;
      unsigned char li_sectorcode ;              //汉字区码
      unsigned char li_positioncode ;            //汉字位码
      int li_secposcode ;              //汉字区位码
      int li_offset ;                  //二级字库偏移量  //set initial values
      ls_secondsectable="cjwgnspgcgne[y[btyyzdxykygt[jnnjqmbsgzscyjsyy[pgkbzgy[ywjkgkl"
        "jywkpjqhy[w[dzlsgmrypywwcckznkyygttnjjnykkzytcjnmcylqlypyqfqrpzslwbtgkjfyxjwzltb"
        "ncxjjjjtxdttsqzycdxxhgck[phffss[ybgxlppbyll[hlxs[zm[jhsojnghdzqyklgjhsgqzhxqgkez"
        "zwyscscjxyeyxadzpmdssmzjzqjyzc[j[wqjbyzpxgznzcpwhkxhqkmwfbpbydtjzzkqhylygxfptyj"
        "yyzpszlfchmqshgmxxsxj[dcsbbqbefsjyhxwgzkpylqbgldlcctnmayddkssngycsgxlyzaybnptsdk"
        "dylhgymylcxpy[jndqjwxqxfyyfjlejpzrxccqwqqsbnkymgplbmjrqcflnymyqmsqyrbcjthztqfrxq"
        "hxmjjcjlxqgjmshzkbswyemyltxfsydswlycjqxsjnqbsctyhbftdcyzdjwyghqfrxwckqkxebptlpxj"
        "zsrmebwhjlbjslyysmdxlclqkxlhxjrzjmfqhxhwywsbhtrxxglhqhfnm[ykldyxzpylgg[mtcfpajjz"
        "yljtyanjgbjplqgdzyqyaxbkysecjsznslyzhsxlzcghpxzhznytdsbcjkdlzayfmydlebbgqyzkxgld"
        "ndnyskjshdlyxbcghxypkdjmmzngmmclgwzszxzjfznmlzzthcsydbdllscddnlkjykjsycjlkwhqasd"
        "knhcsganhdaashtcplcpqybsdmpjlpzjoqlcdhjjysprchn[nnlhlyyqyhwzptczgwwmzffjqqqqyxac"
        "lbhkdjxdgmmydjxzllsygxgkjrywzwyclzmssjzldbyd[fcxyhlxchyzjq[qagmnyxpfrkssbjlyxysy"
        "glnscmhzwwmnzjjlxxhchsy[ttxrycyxbyhcsmxjsznpwgpxxtaybgajcxly[dccwzocwkccsbnhcpdy"
        "znfcyytyckxkybsqkkytqqxfcwchcykelzqbsqyjqcclmthsywhmktlkjlycxwheqqhtqh[pq[qscfym"
        "ndmgbwhwlgsllysdlmlxpthmjhwljzyhzjxhtxjlhxrswlwzjcbxmhzqxsdzpmgfcsglsxymjshxpjxw"
        "myqksmyplrthbxftpmhyxlchlhlzylxgsssstclsldclrpbhzhxyyfhb[gdmycnqqwlqhjj[ywjzyejj"
        "dhpblqxtqkwhlchqxagtlxljxmsl[htzkzjecxjcjnmfby[sfywybjzgnysdzsqyrsljpclpwxsdwejb"
        "jcbcnaytwgmpapclyqpclzxsbnmsggfnzjjbzsfzyndxhplqkzczwalsbccjx[yzgwkypsgxfzfcdkhj"
        "gxdlqfsgdslqwzkxtmhsbgzmjzrglyjbpmlmsxlzjqqhzyjczydjwbmyklddpmjegxyhylxhlqyqhkyc"
        "wcjmyyxnatjhyccxzpcqlbzwwytwbqcmlpmyrjcccxfpznzzljplxxyztzlgdldcklyrzzgqtgjhhgjl"
        "jaxfgfjzslcfdqzlclgjdjcsnzlljpjqdcclcjxmyzftsxgcgsbrzxjqqctzhgyqtjqqlzxjylylbcya"
        "mcstylpdjbyregklzyzhlyszqlznwczcllwjqjjjkdgjzolbbzppglghtgzxyghzmycnqsycyhbhgxka"
        "mtxyxnbskyzzgjzlqjdfcjxdygjqjjpmgwgjjjpkqsbgbmmcjssclpqpdxcdyyky[cjddyygywrhjrtg"
        "znyqldkljszzgzqzjgdykshpzmtlcpwnjafyzdjcnmwescyglbtzcgmssllyxqsxsbsjsbbsgghfjlyp"
        "mzjnlyywdqshzxtyywhmzyhywdbxbtlmsyyyfsxjc[dxxlhjhf[sxzqhfzmzcztqcxzxrttdjhnnyzqq"
        "mnqdmmg[ydxmjgdhcdyzbffallztdltfxmxqzdngwqdbdczjdxbzgsqqddjcmbkzffxmkdmdsyyszcml"
        "jdsynsbrskmkmpcklgdbqtfzswtfgglyplljzhgj[gypzltcsmcnbtjbqfkthbyzgkpbbymtdssxtbnp"
        "dkleycjnyddykzddhqhsdzsctarlltkzlgecllkjlqjaqnbdkkghpjtzqksecshalqfmmgjnlyjbbtml"
        "yzxdcjpldlpcqdhzycbzsczbzmsljflkrzjsnfrgjhxpdhyjybzgdlqcsezgxlblgyxtwmabchecmwyj"
        "yzlljjyhlg[djlslygkdzpzxjyyzlwcxszfgwyydlyhcljscmbjhblyzlycblydpdqysxqzbytdkyxjy"
        "[cnrjmpdjgklcljbctbjddbblblczqrppxjcjlzcshltoljnmdddlngkaqhqhjgykheznmshrp[qqjch"
        "gmfprxhjgdychghlyrzqlcyqjnzsqtkqjymszswlcfqqqxyfggyptqwlmcrnfkkfsyylqbmqammmyxct"
        "pshcptxxzzsmphpshmclmldqfyqxszyydyjzzhqpdszglstjbckbxyqzjsgpsxqzqzrqtbdkyxzkhhgf"
        "lbcsmdldgdzdblzyycxnncsybzbfglzzxswmsccmqnjqsbdqsjtxxmbltxzclzshzcxrqjgjylxzfjph"
        "ymzqqydfqjjlzznzjcdgzygctxmzysctlkphtxhtlbjxjlxscdqxcbbtjfqzfsltjbtkqbxxjjljchcz"
        "dbzjdczjdcprnpqcjpfczlclzxzdmxmphjsgzgszzqlylwtjpfsyasmcjbtzkycwmytcsjjljcqlwzma"
        "lbxyfbpnlsfhtgjwejjxxglljstgshjqlzfkcgnnnszfdeqfhbsaqtgylbxmmygszldydqmjjrgbjtkg"
        "dhgkblqkbdmbylxwcxyttybkmrtjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhz " ;
      //get it !
      ls_returnstr = "" ;
      for( i=1 ; i <= AString.Length() ;i++ )//依次处理AString中每个字符
      {
        ls_ch = AString.SubString(i , 1) ;
        if((unsigned char)(ls_ch[1])<128) //非汉字
        {
          ls_returnstr = ls_returnstr+ls_ch ;    //不变
        }
        else //是汉字
        {
          ls_ch = AString.SubString( i , 2) ;    //取出此汉字
          li_sectorcode = ls_ch[1] - 160 ;       //区码
          li_positioncode = ls_ch[2] - 160 ;     //位码
          li_secposcode = li_sectorcode*100 + li_positioncode ;//区位码
          if(li_secposcode>1600 && li_secposcode<5590)//第一个字符
          {
            for( j=23 ;j>= 0 ;j--)//找声母
            {
              if(li_secposcode>=li_secposvalues[j])
              {
                ls_returnstr = ls_returnstr +  lc_firstletter[j] ;
                break ;
              }
            }
          }
          else//第一个字符
          {
            li_offset = (li_sectorcode - 56 ) *94 + li_positioncode - 1 ;// 计算偏移量
            if( li_offset>=0 && li_offset<=3007)//二区汉字
            {
              ls_returnstr = ls_returnstr + ls_secondsectable.SubString(li_offset , 1) ;//取出此字声母
            }
          }
          i = i+1 ;//指向下一个汉字
        }
      }// 处理完毕
      //return result
      return ls_returnstr.LowerCase() ;//返回 AString 的声母串
    }
      

  2.   

    论坛回复会自动加空格,上述代码中,单引号和双引号中是没有空格的,只有ls_secondsectable最后有一个空格