C#汉字转换拼音技术详解(高性能)

通过网上汉字转换成拼音的代码,经过本人优化,性能将更加优异。

下面将源代码贴出。


 

[csharp] view plaincopy
  1. public static class ChineseToPinYin  
  2.         {  
  3.             private static readonly Dictionary<intstring> CodeCollections = new Dictionary<intstring> {  
  4.  { -20319, "a" }, { -20317, "ai" }, { -20304, "an" }, { -20295, "ang" }, { -20292, "ao" }, { -20283, "ba" }, { -20265, "bai" },   
  5. { -20257, "ban" }, { -20242, "bang" }, { -20230, "bao" }, { -20051, "bei" }, { -20036, "ben" }, { -20032, "beng" }, { -20026, "bi" }  
  6. , { -20002, "bian" }, { -19990, "biao" }, { -19986, "bie" }, { -19982, "bin" }, { -19976, "bing" }, { -19805, "bo" },   
  7. { -19784, "bu" }, { -19775, "ca" }, { -19774, "cai" }, { -19763, "can" }, { -19756, "cang" }, { -19751, "cao" }, { -19746, "ce" },  
  8.  { -19741, "ceng" }, { -19739, "cha" }, { -19728, "chai" }, { -19725, "chan" }, { -19715, "chang" }, { -19540, "chao" },   
  9. { -19531, "che" }, { -19525, "chen" }, { -19515, "cheng" }, { -19500, "chi" }, { -19484, "chong" }, { -19479, "chou" },   
  10. { -19467, "chu" }, { -19289, "chuai" }, { -19288, "chuan" }, { -19281, "chuang" }, { -19275, "chui" }, { -19270, "chun" },  
  11.  { -19263, "chuo" }, { -19261, "ci" }, { -19249, "cong" }, { -19243, "cou" }, { -19242, "cu" }, { -19238, "cuan" },   
  12. { -19235, "cui" }, { -19227, "cun" }, { -19224, "cuo" }, { -19218, "da" }, { -19212, "dai" }, { -19038, "dan" }, { -19023, "dang" },  
  13.  { -19018, "dao" }, { -19006, "de" }, { -19003, "deng" }, { -18996, "di" }, { -18977, "dian" }, { -18961, "diao" }, { -18952, "die" }  
  14. , { -18783, "ding" }, { -18774, "diu" }, { -18773, "dong" }, { -18763, "dou" }, { -18756, "du" }, { -18741, "duan" },   
  15. { -18735, "dui" }, { -18731, "dun" }, { -18722, "duo" }, { -18710, "e" }, { -18697, "en" }, { -18696, "er" }, { -18526, "fa" },  
  16.  { -18518, "fan" }, { -18501, "fang" }, { -18490, "fei" }, { -18478, "fen" }, { -18463, "feng" }, { -18448, "fo" }, { -18447, "fou" }  
  17. , { -18446, "fu" }, { -18239, "ga" }, { -18237, "gai" }, { -18231, "gan" }, { -18220, "gang" }, { -18211, "gao" }, { -18201, "ge" },  
  18.  { -18184, "gei" }, { -18183, "gen" }, { -18181, "geng" }, { -18012, "gong" }, { -17997, "gou" }, { -17988, "gu" }, { -17970, "gua" }  
  19. , { -17964, "guai" }, { -17961, "guan" }, { -17950, "guang" }, { -17947, "gui" }, { -17931, "gun" }, { -17928, "guo" },  
  20. { -17922, "ha" }, { -17759, "hai" }, { -17752, "han" }, { -17733, "hang" }, { -17730, "hao" }, { -17721, "he" }, { -17703, "hei" },  
  21.  { -17701, "hen" }, { -17697, "heng" }, { -17692, "hong" }, { -17683, "hou" }, { -17676, "hu" }, { -17496, "hua" },   
  22. { -17487, "huai" }, { -17482, "huan" }, { -17468, "huang" }, { -17454, "hui" }, { -17433, "hun" }, { -17427, "huo" },   
  23. { -17417, "ji" }, { -17202, "jia" }, { -17185, "jian" }, { -16983, "jiang" }, { -16970, "jiao" }, { -16942, "jie" },   
  24. { -16915, "jin" }, { -16733, "jing" }, { -16708, "jiong" }, { -16706, "jiu" }, { -16689, "ju" }, { -16664, "juan" },   
  25. { -16657, "jue" }, { -16647, "jun" }, { -16474, "ka" }, { -16470, "kai" }, { -16465, "kan" }, { -16459, "kang" }, { -16452, "kao" },  
  26.  { -16448, "ke" }, { -16433, "ken" }, { -16429, "keng" }, { -16427, "kong" }, { -16423, "kou" }, { -16419, "ku" }, { -16412, "kua" }  
  27. , { -16407, "kuai" }, { -16403, "kuan" }, { -16401, "kuang" }, { -16393, "kui" }, { -16220, "kun" }, { -16216, "kuo" },   
  28. { -16212, "la" }, { -16205, "lai" }, { -16202, "lan" }, { -16187, "lang" }, { -16180, "lao" }, { -16171, "le" }, { -16169, "lei" },   
  29. { -16158, "leng" }, { -16155, "li" }, { -15959, "lia" }, { -15958, "lian" }, { -15944, "liang" }, { -15933, "liao" },   
  30. { -15920, "lie" }, { -15915, "lin" }, { -15903, "ling" }, { -15889, "liu" }, { -15878, "long" }, { -15707, "lou" }, { -15701, "lu" },  
  31.  { -15681, "lv" }, { -15667, "luan" }, { -15661, "lue" }, { -15659, "lun" }, { -15652, "luo" }, { -15640, "ma" }, { -15631, "mai" },  
  32.  { -15625, "man" }, { -15454, "mang" }, { -15448, "mao" }, { -15436, "me" }, { -15435, "mei" }, { -15419, "men" },   
  33. { -15416, "meng" }, { -15408, "mi" }, { -15394, "mian" }, { -15385, "miao" }, { -15377, "mie" }, { -15375, "min" },   
  34. { -15369, "ming" }, { -15363, "miu" }, { -15362, "mo" }, { -15183, "mou" }, { -15180, "mu" }, { -15165, "na" }, { -15158, "nai" },   
  35. { -15153, "nan" }, { -15150, "nang" }, { -15149, "nao" }, { -15144, "ne" }, { -15143, "nei" }, { -15141, "nen" }, { -15140, "neng" }  
  36. , { -15139, "ni" }, { -15128, "nian" }, { -15121, "niang" }, { -15119, "niao" }, { -15117, "nie" }, { -15110, "nin" },   
  37. { -15109, "ning" }, { -14941, "niu" }, { -14937, "nong" }, { -14933, "nu" }, { -14930, "nv" }, { -14929, "nuan" }, { -14928, "nue" }  
  38. , { -14926, "nuo" }, { -14922, "o" }, { -14921, "ou" }, { -14914, "pa" }, { -14908, "pai" }, { -14902, "pan" }, { -14894, "pang" },  
  39.  { -14889, "pao" }, { -14882, "pei" }, { -14873, "pen" }, { -14871, "peng" }, { -14857, "pi" }, { -14678, "pian" },   
  40. { -14674, "piao" }, { -14670, "pie" }, { -14668, "pin" }, { -14663, "ping" }, { -14654, "po" }, { -14645, "pu" }, { -14630, "qi" },  
  41.  { -14594, "qia" }, { -14429, "qian" }, { -14407, "qiang" }, { -14399, "qiao" }, { -14384, "qie" }, { -14379, "qin" },  
  42.  { -14368, "qing" }, { -14355, "qiong" }, { -14353, "qiu" }, { -14345, "qu" }, { -14170, "quan" }, { -14159, "que" },   
  43. { -14151, "qun" }, { -14149, "ran" }, { -14145, "rang" }, { -14140, "rao" }, { -14137, "re" }, { -14135, "ren" }, { -14125, "reng" }  
  44. , { -14123, "ri" }, { -14122, "rong" }, { -14112, "rou" }, { -14109, "ru" }, { -14099, "ruan" }, { -14097, "rui" }, { -14094, "run" }  
  45. , { -14092, "ruo" }, { -14090, "sa" }, { -14087, "sai" }, { -14083, "san" }, { -13917, "sang" }, { -13914, "sao" }, { -13910, "se" }  
  46. , { -13907, "sen" }, { -13906, "seng" }, { -13905, "sha" }, { -13896, "shai" }, { -13894, "shan" }, { -13878, "shang" },   
  47. { -13870, "shao" }, { -13859, "she" }, { -13847, "shen" }, { -13831, "sheng" }, { -13658, "shi" }, { -13611, "shou" },  
  48.  { -13601, "shu" }, { -13406, "shua" }, { -13404, "shuai" }, { -13400, "shuan" }, { -13398, "shuang" }, { -13395, "shui" },  
  49.  { -13391, "shun" }, { -13387, "shuo" }, { -13383, "si" }, { -13367, "song" }, { -13359, "sou" }, { -13356, "su" },   
  50. { -13343, "suan" }, { -13340, "sui" }, { -13329, "sun" }, { -13326, "suo" }, { -13318, "ta" }, { -13147, "tai" }, { -13138, "tan" },  
  51.  { -13120, "tang" }, { -13107, "tao" }, { -13096, "te" }, { -13095, "teng" }, { -13091, "ti" }, { -13076, "tian" },   
  52. { -13068, "tiao" }, { -13063, "tie" }, { -13060, "ting" }, { -12888, "tong" }, { -12875, "tou" }, { -12871, "tu" },   
  53. { -12860, "tuan" }, { -12858, "tui" }, { -12852, "tun" }, { -12849, "tuo" }, { -12838, "wa" }, { -12831, "wai" }, { -12829, "wan" }  
  54. , { -12812, "wang" }, { -12802, "wei" }, { -12607, "wen" }, { -12597, "weng" }, { -12594, "wo" }, { -12585, "wu" }, { -12556, "xi" }  
  55. , { -12359, "xia" }, { -12346, "xian" }, { -12320, "xiang" }, { -12300, "xiao" }, { -12120, "xie" }, { -12099, "xin" },   
  56. { -12089, "xing" }, { -12074, "xiong" }, { -12067, "xiu" }, { -12058, "xu" }, { -12039, "xuan" }, { -11867, "xue" },   
  57. { -11861, "xun" }, { -11847, "ya" }, { -11831, "yan" }, { -11798, "yang" }, { -11781, "yao" }, { -11604, "ye" }, { -11589, "yi" },  
  58.  { -11536, "yin" }, { -11358, "ying" }, { -11340, "yo" }, { -11339, "yong" }, { -11324, "you" }, { -11303, "yu" },   
  59. { -11097, "yuan" }, { -11077, "yue" }, { -11067, "yun" }, { -11055, "za" }, { -11052, "zai" }, { -11045, "zan" },  
  60.  { -11041, "zang" }, { -11038, "zao" }, { -11024, "ze" }, { -11020, "zei" }, { -11019, "zen" }, { -11018, "zeng" },   
  61. { -11014, "zha" }, { -10838, "zhai" }, { -10832, "zhan" }, { -10815, "zhang" }, { -10800, "zhao" }, { -10790, "zhe" },   
  62. { -10780, "zhen" }, { -10764, "zheng" }, { -10587, "zhi" }, { -10544, "zhong" }, { -10533, "zhou" }, { -10519, "zhu" },   
  63. { -10331, "zhua" }, { -10329, "zhuai" }, { -10328, "zhuan" }, { -10322, "zhuang" }, { -10315, "zhui" }, { -10309, "zhun" },   
  64. { -10307, "zhuo" }, { -10296, "zi" }, { -10281, "zong" }, { -10274, "zou" }, { -10270, "zu" }, { -10262, "zuan" }, { -10260, "zui" }  
  65. , { -10256, "zun" }, { -10254, "zuo" } };  
  66.             ///   <summary>   
  67.             ///   汉字转拼音   
  68.             ///   </summary>   
  69.             ///   <param   name="txt"> 需要转换的汉字 </param>   
  70.             ///   <returns> 返回汉字对应的拼音 </returns>   
  71.             public static string ToPinYin(string txt)  
  72.             {  
  73.                 txt = txt.Trim();  
  74.                 byte[] arr = new byte[2];   //每个汉字为2字节   
  75.                 StringBuilder result = new StringBuilder();//使用StringBuilder优化字符串连接  
  76.                 int charCode = 0;  
  77.                 int arr1 = 0;  
  78.                 int arr2 = 0;  
  79.                 char[] arrChar = txt.ToCharArray();  
  80.                 for (int j = 0; j < arrChar.Length; j++)   //遍历输入的字符   
  81.                 {  
  82.                     arr = System.Text.Encoding.Default.GetBytes(arrChar[j].ToString());//根据系统默认编码得到字节码   
  83.                     if (arr.Length == 1)//如果只有1字节说明该字符不是汉字,结束本次循环   
  84.                     {  
  85.                         result.Append(arrChar[j].ToString());  
  86.                         continue;  
  87.   
  88.                     }  
  89.                     arr1 = (short)(arr[0]);   //取字节1   
  90.                     arr2 = (short)(arr[1]);   //取字节2   
  91.                     charCode = arr1 * 256 + arr2 - 65536;//计算汉字的编码   
  92.   
  93.                      if (charCode > -10254 || charCode < -20319)  //如果不在汉字编码范围内则不改变   
  94.                     {  
  95.                         result.Append(arrChar[j]);  
  96.                     }  
  97.                     else  
  98.                     {  
  99.                         //根据汉字编码范围查找对应的拼音并保存到结果中   
  100.                         //由于charCode的键不一定存在,所以要找比他更小的键上一个键  
  101.                         if (!CodeCollections.ContainsKey(charCode))  
  102.                         {  
  103.                             for (int i = charCode; i <= 0; --i)  
  104.                             {  
  105.                                 if (CodeCollections.ContainsKey(i))  
  106.                                 {  
  107.                                     result.Append(" " + CodeCollections[i] + " ");  
  108.                                     break;  
  109.                                 }  
  110.                             }  
  111.                         }  
  112.                         else  
  113.                         {  
  114.                             result.Append(" " + CodeCollections[charCode] + " ");  
  115.                         }  
  116.                     }  
  117.                 }  
  118.                 return result.ToString();  
  119.             }  
  120.         }  



更多WEB開發技術請加群:Asp.Net/Wp8高級開發群 號碼:261882616

 

博主以及同事和你共同探討感興趣的話題

转载于:https://www.cnblogs.com/lilin123/archive/2012/11/01/2749169.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle出错如何备份数据,备份oracle数据库出错

备份oracle数据库出错input datafile fno00027 name/index/neas_standard01.dbfinput datafile fno00035 name/oradata1/tancke/neas_standard09.dbfinput datafile fno00001 name/oradata/new/tancke/system01.dbfchannel ch01: starting piece 1 at 06-SEP-10RMAN-03009: fai…

python整数因子_Python:通过非整数因子下采样2D numpy数组

我最后写了一个小函数,使用scipy.ndimage.zoom升级图像,但是为了缩小它,它首先将它升级为原始形状的倍数,然后通过块平均缩小.它接受scipy.zoom的任何其他关键字参数(order和prefilter)我仍在寻找使用可用软件包的更清洁的解决方案.def zoomArray(inArray, finalShape, sameSum…

[html] 当html中使用map标签时,area中coords值如何精确定位呢?

[html] 当html中使用map标签时,area中coords值如何精确定位呢&#xff1f; 在 area 标签上支持的属性有 shape、coords、href、alt、target、type、download、hreflang、media、rel&#xff1b; coords 值如何精确定位圆形&#xff0c;在绘制一个圆形时&#xff0c;其 shapeci…

[html] 当img标签中的src图片加载失败时,怎么让它变得更美观呢?

[html] 当img标签中的src图片加载失败时&#xff0c;怎么让它变得更美观呢&#xff1f; 当默认图也失效&#xff0c;就会陷入死循环&#xff0c;需加变量计数&#xff0c;如果是 vue 的话用 error.once 更妙。在 onerror 给元素加个类名也阔以&#xff0c;这个就挺 nice 的。使…

python输入n×n的矩阵0和1_关于Python数组和矩阵的用法X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]...

1、关于数组、矩阵的说明。X[:,0] 取二维数组中第一维的所有数据。X[:,1] 取二维数组中第二维的所有数据。X[:,m:n] 取二维数组中第m维到第n-1维的所有数据。X[:,:,0] 取三维矩阵中第一维的所有数据。X[:,:,1] 取三维矩阵中第二维的所有数据。X[:,:,m:n] 取三维矩阵中第m维到第…

将时间格式的字符串转换成日期类型浏览器兼容解决方案

var currentTime "20120612"; var y currentTime.substring(0, 4); var m currentTime.substring(4, 6); var d currentTime.substring(6, 8); currentTime y "-" m "-" d;//此种写法在火狐跟谷歌下都可以currentTimey"/"m&qu…

对比linux终端模式和图形模式,Linux知识-2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式...

2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式通常我们也称命令模式为终端机接口,terminal 或console 。Linux 预设的情况下会提供六个Terminal 来让使用者登入&#xff0c;切换的方式为使用&#xff1a;[Ctrl] [Alt] [F1]~[F6]的组合按钮。那这六个终端接口如何命名…

[html] 你有用过图片热区吗?它有什么运用场景?

[html] 你有用过图片热区吗&#xff1f;它有什么运用场景&#xff1f; 点击logo回到主页点击地图区块跳到具体的地方网站个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面…

mysql 写入慢_MySQL主从,你遇到过哪些问题?

上篇文章介绍了单机环境下的MySQL主从异步复制和主从半同步复制的搭建过程。搭建过程很简单&#xff0c;但是在实际使用过程中&#xff0c;更多的是解决问题&#xff0c;本篇文章将介绍一下MySQL主从复制中常见的问题以及如何定位问题和如何解决问题。1、可能的原因如下(1)主从…

Girl Love Value

【原题链接】 【题意说明】 有一组共有N个正整数&#xff0c;每次只能取其中的一个数&#xff0c;每次没有被取到的数会减少相应的值&#xff0c;把每次取到数的值累加&#xff0c;问共要取K个数&#xff0c;在所有取法中&#xff0c;和最大是多少&#xff1f; 【问题分析】 快…

linux查找时间文件,Linux基础教程 linux下使用find命令根据系统时间查找文件用法(示例代码)...

LinuxFind兄弟连Linux培训总结这些时间戳包括复制代码代码如下:mtime 文件内容上次修改时间atime 文件被读取或访问的时间ctime 文件状态变化时间mtime 和 atime 的含义都是很容易理解的&#xff0c;而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据&#xff0…

如何清理 Weblogic Server 缓存

Weblogic中的项目重新编译、部署之后并不起作用&#xff0c;仍然运行原来的程序。这可能是 Weblogic缓存在作怪&#xff0c;需要手动删除。 Weblogic 8 SP6 的缓存位置&#xff1a; %BEA HOME%\user_projects\domains\<Your Domain>\<Your Server>\.wlnotdelete\ex…

python安装django模块_python中安装django模块的方法

网上搜一下对应的版本号&#xff0c;版本号相对应。安装django有两种方式&#xff1a;1.pip安装pip install django这个方法我用的时候已经报错。貌似访问被阻挡。我一般都用第二种2.下载压缩包手动安装在django官网下载tar.gz包&#xff0c;放在python对应目录中解压缩命令窗口…

linux对目录进行操作,Linux 基础:对文件和目录进行操作的 Linux 和 Unix 命令 笔记...

参考文章《Linux Basic – Linux and Unix Commands for File and Directory Manipulation》https://www.jianshu.com/writer#/notebooks/37377394/notes/66158656/preview◈ ls 列出目录的内容◈ cp 将文件和目录从一个位置复制到另一位置。◈ mv 将文件和目录从一个位置移动到…

[html] 举例说明当我们在写布局时,都有哪些边界的情况需要关注的?

[html] 举例说明当我们在写布局时&#xff0c;都有哪些边界的情况需要关注的&#xff1f; margin 重叠在竖直方向&#xff0c;当两个元素的外边距连在一块时&#xff0c;两者的距离并不是两者的 margin 之和&#xff0c;而是取最大的 margin 值。个人简介 我是歌谣&#xff0…

(转)GDB 使用方法

感谢原创作者的辛勤劳动&#xff1b; 简述 一 列文件清单 二&#xff1a;执行程序 三&#xff1a;显示数据 四&#xff1a;断点(breakpoint) 五&#xff0e;断点的管理 六&#xff0e;变量的检查和赋值 七. 单步执行 八&#xff0e;函数的调用 九&#xff0e;机器语言工具 十&a…

[html] 如何去除标签<i>默认斜体?

[html] 如何去除标签默认斜体&#xff1f; font-style: normal;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

vue根据不同权限显示图片_vue多级权限组件的实现

首先实现递归checkbox的组件假定&#xff0c;我们要实现的权限组件效果是这样的&#xff1a;要实现点击系统&#xff0c;下面的都全选&#xff0c;点击基础功能&#xff0c;用户管理半选&#xff0c;系统半选。点击新增组织&#xff0c;如果基础功能没有选中&#xff0c;则基础…

linux自带磁盘加密工具下载,TrueCrypt(磁盘加密工具)

TrueCrypt是一款功能强大的虚拟磁盘加密工具&#xff0c;它能够在硬盘上创建一个或多个虚拟磁盘&#xff0c;并且自动加密磁盘文件&#xff0c;提供AES-256、Blowfish、Serpent等多种加密算法&#xff0c;用户可以同时采取两个或多个来提高加密效果&#xff0c;软件体积小巧&am…

JS如何控制checkbox的全选反选

JS代码&#xff1a; 1 <script language"javascript" type"text/javascript">2 3 //转载请保留出处 http://www.dwww.cn 4 function unselectall() {5 if (document.getElementById("chkAll").checked) {6 …