当前位置: 首页 > article >正文

汉字自动生成拼音码

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace PYCode
{  
    public class AutoPYCode
    {
        private static string[] lc_FirstLetter = null;//存放国标一级汉字不同读音的起始区位码对应读音   
        private static String ls_SecondSecTable = string.Empty;//存放所有国标二级汉字读音  
        private static int[] li_SecPosValue = null;//存放国标一级汉字不同读音的起始区位码  

        static AutoPYCode()
        {
            li_SecPosValue = new int[23] { 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 = new string[23] { "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[DZLSGMRYPYWWCCKZNKYYGTTNJJNYKKZYTCJNMCYLQLYPYQFQRPZSLWBT"
                               +"GKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCK[PHFFSS[YBGXLPPBYLL[HLXS[ZM[JHSOJNGHDZQYKLGJHSGQZHXQGKEZZWYSCSCJXYEYXADZPMDSSMZJZQJYZC[J[WQJB"
                               +"YZPXGZNZCPWHKXHQKMWFBPBYDTJZZKQHYLYGXFPTYJYYZPSZLFCHMQSHGMXXSXJ[[DCSBBQBEFSJYHXWGZKPYLQBGLDLCCTNMAYDDKSSNGYCSGXLYZAYBNPTSDKDYLHGY"
                               +"MYLCXPY[JNDQJWXQXFYYFJLEJPZRXCCQWQQSBNKYMGPLBMJRQCFLNYMYQMSQYRBCJTHZTQFRXQHXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSWLYCJQXSJNQBSCTYHBFTDCY"
                               +"ZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXHWYWSBHTRXXGLHQHFNM[YKLDYXZPYLGG[MTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBK"
                               +"YSECJSZNSLYZHSXLZCGHPXZHZNYTDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCSYDBDLLSCDDNLKJYKJSYCJL"
                               +"KWHQASDKNHCSGANHDAASHTCPLCPQYBSDMPJLPZJOQLCDHJJYSPRCHN[NNLHLYYQYHWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMYDJXZLLSYGXGKJRYWZWYCLZMSSJZLDB"
                               +"YD[FCXYHLXCHYZJQ[[QAGMNYXPFRKSSBJLYXYSYGLNSCMHZWWMNZJJLXXHCHSY[[TTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLY[DCCWZOCWKCCSBNHCPDYZNFCYYTYC"
                               +"KXKYBSQKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQH[PQ[QSCFYMNDMGBWHWLGSLLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXS"
                               +"DZPMGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFHB[GDMYCNQQWLQHJJ[YWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMS"
                               +"L[HTZKZJECXJCJNMFBY[SFYWYBJZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDXHPLQKZCZWALSBCCJX[YZGWKYPSGXFZFC"
                               +"DKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMSXLZJQQHZYJCZYDJWBMYKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZ"
                               +"NZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNZLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREG"
                               +"KLZYZHLYSZQLZNWCZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWGJJJPKQSBGBMMCJSSCLPQPDXCDYYK"
                               +"Y[CJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJAFYZDJCNMWESCYGLBTZCGMSSLLYXQSXSBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMZYHYWDBXBTLM"
                               +"SYYYFSXJC[DXXLHJHF[SXZQHFZMZCZTQCXZXRTTDJHNNYZQQMNQDMMG[YDXMJGDHCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGSQQDDJCMBKZFFXMKDMDSYYSZCMLJ"
                               +"DSYNSBRSKMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJ[GYPZLTCSMCNBTJBQFKTHBYZGKPBBYMTDSSXTBNPDKLEYCJNYDDYKZDDHQHSDZSCTARLLTKZLGECLLKJLQJAQNBDKK"
                               +"GHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDCJPLDLPCQDHZYCBZSCZBZMSLJFLKRZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLG[DJLSLYGK"
                               +"DZPZXJYYZLWCXSZFGWYYDLYHCLJSCMBJHBLYZLYCBLYDPDQYSXQZBYTDKYXJY[CNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPPXJCJLZCSHLTOLJNMDDDLNGKAQHQHJGYKHEZ"
                               +"NMSHRP[QQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYYDYJZZ"
                               +"HQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZKHHGFLBCSMDLDGDZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQY"
                               +"DFQJJLZZNZJCDGZYGCTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZGSZZQLYLWTJPFSYASM"
                               +"CJBTZKYCWMYTCSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQFHBSAQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBK"
                               +"MRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ";
        }

        private static Int32 SectorCode(char chr)
        {
            Encoding ecode = Encoding.GetEncoding("GB18030");
            Byte[] codeBytes = ecode.GetBytes(chr.ToString());
            return (int)codeBytes[0];
        }

        private static Int32 PositionCode(char chr)
        {
            Encoding ecode = Encoding.GetEncoding("GB18030");
            Byte[] codeBytes = ecode.GetBytes(chr.ToString());
            return (int)codeBytes[1];
        }

        public static string GetFirstLetter(string str)
        {
            String ls_ch = string.Empty;//临时单元
            String ls_returnStr = string.Empty; //返回串 
            int li_SectorCode; //汉字区码 
            int li_PositionCode; //汉字位码  
            int li_SecPosCode; //汉字区位码  
            int li_offset; //二级字库偏移量  

            for (int i = 0; i < str.Length; i++) //依次处理str中每个字符 
            {
                if ((SectorCode(chineseStr[i]) >= 65 && SectorCode(chineseStr[i]) <= 90) || //大写字母
                        (SectorCode(chineseStr[i]) >= 97 && SectorCode(chineseStr[i]) <= 122)) //小写字母

                {
                    ls_returnStr = ls_returnStr + str[i].ToString();//不变  
                }
                else  if (SectorCode(str[i]) >= 128) //是汉字
                {
                    li_SectorCode = SectorCode(str[i]) - 160;//区码  

                    li_PositionCode = PositionCode(str[i]) - 160;//位码  

                    li_SecPosCode = li_SectorCode * 100 + li_PositionCode; //区位码  

                    if (li_SecPosCode > 1600 && li_SecPosCode < 5590) //第一个字符
                    {
                        for (int j = 23; j >= 1; j--)//找声母  
                        {
                            if (li_SecPosCode >= li_SecPosValue[j-1])
                            {
                                ls_returnStr = ls_returnStr + lc_FirstLetter[j-1];
                                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); //取出此字声母  
                        }
                    }
                }
            }
            return ls_returnStr; //返回声母串
        }
    }
}

http://www.lryc.cn/news/2421141.html

相关文章:

  • python打印万年历
  • 旅游学概论期末复习提纲 试题(含答案)
  • ubuntu 超级优化,不仅仅是禁用几个服务哦
  • [DSP]基础概念
  • 搭建一个简易的springboot+springcloud项目
  • npm ERR! errno CERT_HAS_EXPIRED(淘宝镜像证书过期)
  • HTML5期末大作业:我的家乡网站设计——我的家乡
  • 如何创建一个有吸引力的博客标题? 用实际例子解释!
  • 【笔记------LCD1602 SCM1602H-P9-Ver1.2】------ 4位数据驱动
  • 电脑出现无法访问您试图使用的功能所在的网络位置怎么办?(清除软件卸载残留)
  • JSP详解,看这一篇就够了(含示例)
  • DNS欺骗劫持与防御策略
  • 鸿蒙生死印作用,逆天邪神:鸿蒙生死印应该有个BUG能力,两位梵天老祖身上有提示...
  • 常见滤波算法(Python版本)
  • Vue3 -- 基于Websocket实现简易聊天室
  • 清除移动硬盘中jwgkvsq.vmx病毒
  • 什么是工业微型计算机,工业用微型计算机第一讲.ppt
  • C语言之网络编程(服务器和客户端)
  • HTML入门及其概念简析
  • SQL:select case 用法详解 带例子 图解说明 sqlserver2000
  • springboot的多模块开发
  • 开源网上商城程序(简介国内外开源网店系统)
  • 破解硬盘还原卡与还原精灵
  • 云南省增值税发票综合平台(修订版)----发票抵扣勾选教程---
  • 注册表无法修改解决
  • Android之MediaPlayer详解
  • Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)
  • 参观中关村软件园二期小记
  • 怎么完全卸载赛门铁克_赛门铁克(sep)卸载方法
  • Xcode5.1离线下载安装及使用iOS5模拟器进行开发调试的方法