using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Common
{
//Author:GaoBingBing
public static class ChineseToPinYin
{
private static readonly Dictionary<int, string> CodeCollections = new Dictionary<int, string> {
{ -, "a" }, { -, "ai" }, { -, "an" }, { -, "ang" }, { -, "ao" }, { -, "ba" }, { -, "bai" },
{ -, "ban" }, { -, "bang" }, { -, "bao" }, { -, "bei" }, { -, "ben" }, { -, "beng" }, { -, "bi" }
, { -, "bian" }, { -, "biao" }, { -, "bie" }, { -, "bin" }, { -, "bing" }, { -, "bo" },
{ -, "bu" }, { -, "ca" }, { -, "cai" }, { -, "can" }, { -, "cang" }, { -, "cao" }, { -, "ce" },
{ -, "ceng" }, { -, "cha" }, { -, "chai" }, { -, "chan" }, { -, "chang" }, { -, "chao" },
{ -, "che" }, { -, "chen" }, { -, "cheng" }, { -, "chi" }, { -, "chong" }, { -, "chou" },
{ -, "chu" }, { -, "chuai" }, { -, "chuan" }, { -, "chuang" }, { -, "chui" }, { -, "chun" },
{ -, "chuo" }, { -, "ci" }, { -, "cong" }, { -, "cou" }, { -, "cu" }, { -, "cuan" },
{ -, "cui" }, { -, "cun" }, { -, "cuo" }, { -, "da" }, { -, "dai" }, { -, "dan" }, { -, "dang" },
{ -, "dao" }, { -, "de" }, { -, "deng" }, { -, "di" }, { -, "dian" }, { -, "diao" }, { -, "die" }
, { -, "ding" }, { -, "diu" }, { -, "dong" }, { -, "dou" }, { -, "du" }, { -, "duan" },
{ -, "dui" }, { -, "dun" }, { -, "duo" }, { -, "e" }, { -, "en" }, { -, "er" }, { -, "fa" },
{ -, "fan" }, { -, "fang" }, { -, "fei" }, { -, "fen" }, { -, "feng" }, { -, "fo" }, { -, "fou" }
, { -, "fu" }, { -, "ga" }, { -, "gai" }, { -, "gan" }, { -, "gang" }, { -, "gao" }, { -, "ge" },
{ -, "gei" }, { -, "gen" }, { -, "geng" }, { -, "gong" }, { -, "gou" }, { -, "gu" }, { -, "gua" }
, { -, "guai" }, { -, "guan" }, { -, "guang" }, { -, "gui" }, { -, "gun" }, { -, "guo" },
{ -, "ha" }, { -, "hai" }, { -, "han" }, { -, "hang" }, { -, "hao" }, { -, "he" }, { -, "hei" },
{ -, "hen" }, { -, "heng" }, { -, "hong" }, { -, "hou" }, { -, "hu" }, { -, "hua" },
{ -, "huai" }, { -, "huan" }, { -, "huang" }, { -, "hui" }, { -, "hun" }, { -, "huo" },
{ -, "ji" }, { -, "jia" }, { -, "jian" }, { -, "jiang" }, { -, "jiao" }, { -, "jie" },
{ -, "jin" }, { -, "jing" }, { -, "jiong" }, { -, "jiu" }, { -, "ju" }, { -, "juan" },
{ -, "jue" }, { -, "jun" }, { -, "ka" }, { -, "kai" }, { -, "kan" }, { -, "kang" }, { -, "kao" },
{ -, "ke" }, { -, "ken" }, { -, "keng" }, { -, "kong" }, { -, "kou" }, { -, "ku" }, { -, "kua" }
, { -, "kuai" }, { -, "kuan" }, { -, "kuang" }, { -, "kui" }, { -, "kun" }, { -, "kuo" },
{ -, "la" }, { -, "lai" }, { -, "lan" }, { -, "lang" }, { -, "lao" }, { -, "le" }, { -, "lei" },
{ -, "leng" }, { -, "li" }, { -, "lia" }, { -, "lian" }, { -, "liang" }, { -, "liao" },
{ -, "lie" }, { -, "lin" }, { -, "ling" }, { -, "liu" }, { -, "long" }, { -, "lou" }, { -, "lu" },
{ -, "lv" }, { -, "luan" }, { -, "lue" }, { -, "lun" }, { -, "luo" }, { -, "ma" }, { -, "mai" },
{ -, "man" }, { -, "mang" }, { -, "mao" }, { -, "me" }, { -, "mei" }, { -, "men" },
{ -, "meng" }, { -, "mi" }, { -, "mian" }, { -, "miao" }, { -, "mie" }, { -, "min" },
{ -, "ming" }, { -, "miu" }, { -, "mo" }, { -, "mou" }, { -, "mu" }, { -, "na" }, { -, "nai" },
{ -, "nan" }, { -, "nang" }, { -, "nao" }, { -, "ne" }, { -, "nei" }, { -, "nen" }, { -, "neng" }
, { -, "ni" }, { -, "nian" }, { -, "niang" }, { -, "niao" }, { -, "nie" }, { -, "nin" },
{ -, "ning" }, { -, "niu" }, { -, "nong" }, { -, "nu" }, { -, "nv" }, { -, "nuan" }, { -, "nue" }
, { -, "nuo" }, { -, "o" }, { -, "ou" }, { -, "pa" }, { -, "pai" }, { -, "pan" }, { -, "pang" },
{ -, "pao" }, { -, "pei" }, { -, "pen" }, { -, "peng" }, { -, "pi" }, { -, "pian" },
{ -, "piao" }, { -, "pie" }, { -, "pin" }, { -, "ping" }, { -, "po" }, { -, "pu" }, { -, "qi" },
{ -, "qia" }, { -, "qian" }, { -, "qiang" }, { -, "qiao" }, { -, "qie" }, { -, "qin" },
{ -, "qing" }, { -, "qiong" }, { -, "qiu" }, { -, "qu" }, { -, "quan" }, { -, "que" },
{ -, "qun" }, { -, "ran" }, { -, "rang" }, { -, "rao" }, { -, "re" }, { -, "ren" }, { -, "reng" }
, { -, "ri" }, { -, "rong" }, { -, "rou" }, { -, "ru" }, { -, "ruan" }, { -, "rui" }, { -, "run" }
, { -, "ruo" }, { -, "sa" }, { -, "sai" }, { -, "san" }, { -, "sang" }, { -, "sao" }, { -, "se" }
, { -, "sen" }, { -, "seng" }, { -, "sha" }, { -, "shai" }, { -, "shan" }, { -, "shang" },
{ -, "shao" }, { -, "she" }, { -, "shen" }, { -, "sheng" }, { -, "shi" }, { -, "shou" },
{ -, "shu" }, { -, "shua" }, { -, "shuai" }, { -, "shuan" }, { -, "shuang" }, { -, "shui" },
{ -, "shun" }, { -, "shuo" }, { -, "si" }, { -, "song" }, { -, "sou" }, { -, "su" },
{ -, "suan" }, { -, "sui" }, { -, "sun" }, { -, "suo" }, { -, "ta" }, { -, "tai" }, { -, "tan" },
{ -, "tang" }, { -, "tao" }, { -, "te" }, { -, "teng" }, { -, "ti" }, { -, "tian" },
{ -, "tiao" }, { -, "tie" }, { -, "ting" }, { -, "tong" }, { -, "tou" }, { -, "tu" },
{ -, "tuan" }, { -, "tui" }, { -, "tun" }, { -, "tuo" }, { -, "wa" }, { -, "wai" }, { -, "wan" }
, { -, "wang" }, { -, "wei" }, { -, "wen" }, { -, "weng" }, { -, "wo" }, { -, "wu" }, { -, "xi" }
, { -, "xia" }, { -, "xian" }, { -, "xiang" }, { -, "xiao" }, { -, "xie" }, { -, "xin" },
{ -, "xing" }, { -, "xiong" }, { -, "xiu" }, { -, "xu" }, { -, "xuan" }, { -, "xue" },
{ -, "xun" }, { -, "ya" }, { -, "yan" }, { -, "yang" }, { -, "yao" }, { -, "ye" }, { -, "yi" },
{ -, "yin" }, { -, "ying" }, { -, "yo" }, { -, "yong" }, { -, "you" }, { -, "yu" },
{ -, "yuan" }, { -, "yue" }, { -, "yun" }, { -, "za" }, { -, "zai" }, { -, "zan" },
{ -, "zang" }, { -, "zao" }, { -, "ze" }, { -, "zei" }, { -, "zen" }, { -, "zeng" },
{ -, "zha" }, { -, "zhai" }, { -, "zhan" }, { -, "zhang" }, { -, "zhao" }, { -, "zhe" },
{ -, "zhen" }, { -, "zheng" }, { -, "zhi" }, { -, "zhong" }, { -, "zhou" }, { -, "zhu" },
{ -, "zhua" }, { -, "zhuai" }, { -, "zhuan" }, { -, "zhuang" }, { -, "zhui" }, { -, "zhun" },
{ -, "zhuo" }, { -, "zi" }, { -, "zong" }, { -, "zou" }, { -, "zu" }, { -, "zuan" }, { -, "zui" }
, { -, "zun" }, { -, "zuo" } };
/// <summary>
/// 汉字转拼音
/// </summary>
/// <param name="txt"> 需要转换的汉字 </param>
/// <returns> 返回汉字对应的拼音 </returns>
public static string ToPinYin(string txt)
{
txt = txt.Trim();
byte[] arr = new byte[]; //每个汉字为2字节
StringBuilder result = new StringBuilder();//使用StringBuilder优化字符串连接
int charCode = ;
int arr1 = ;
int arr2 = ;
char[] arrChar = txt.ToCharArray();
for (int j = ; j < arrChar.Length; j++) //遍历输入的字符
{
arr = System.Text.Encoding.Default.GetBytes(arrChar[j].ToString());//根据系统默认编码得到字节码
if (arr.Length == )//如果只有1字节说明该字符不是汉字,结束本次循环
{
result.Append(arrChar[j].ToString());
continue; }
arr1 = (short)(arr[]); //取字节1
arr2 = (short)(arr[]); //取字节2
charCode = arr1 * + arr2 - ;//计算汉字的编码 if (charCode > - || charCode < -) //如果不在汉字编码范围内则不改变
{
result.Append(arrChar[j]);
}
else
{
//根据汉字编码范围查找对应的拼音并保存到结果中
//由于charCode的键不一定存在,所以要找比他更小的键上一个键
if (!CodeCollections.ContainsKey(charCode))
{
for (int i = charCode; i <= ; --i)
{
if (CodeCollections.ContainsKey(i))
{
result.Append( CodeCollections[i]);
break;
}
}
}
else
{
result.Append(CodeCollections[charCode]);
}
}
}
return result.ToString().Trim();
}
}
}

ChineseToPinYin

.NET技术交流群 199281001 .欢迎加入。

最新文章

  1. oracle DML(数据管理语言)sql 基本语句
  2. 在安装AndroidStudio时产生的问题
  3. css相对定位和绝对定位
  4. P​D​F​二​次​开​发​_​i​S​t​y​l​e​P​D​F​表​单​域​的​填​充
  5. Android 设置代理(验证用户名和密码)
  6. AngularJS之ng-options的best practise
  7. node.js npm权限问题try running this command again as root/Administrator.
  8. 修改PHP的默认时区
  9. 为什么报错说req未定义,createServer只接受匿名函数吗?
  10. jquery的选项卡事件
  11. GitLab CI/CD 进行持续集成
  12. 201771010126 王燕《面向对象程序设计(java)》第十八周学习总结
  13. git克隆github上的代码(整个分支),并使用vs code上传到github
  14. Python 安装beautifulsoup4遇到No module named setuptools问题解决方法
  15. Vue自学
  16. Day Four
  17. Sysprep错误一则
  18. tpcc-mysql安装、使用、结果解读
  19. document.getElementsByTagName
  20. PHP大小写:函数名和类名不区分,变量名区分

热门文章

  1. 面试准备(四)Java基本数据类型
  2. win系统 添加、修改右键&ldquo;发送到&rdquo;
  3. C#脚本引擎 CS-Script 之(一)——初识
  4. mustache.js
  5. android之读取SD卡状态
  6. Objective-C Runtime(转)
  7. Mobile Web
  8. DELL R710服务器做RAID5磁盘阵列图文教程
  9. 在CentOS上安装SQLServer
  10. 读MBE