C# 汉字转拼音
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 .欢迎加入。
C# 汉字转拼音的更多相关文章
- iOS 汉字的拼音
获取汉字的拼音 #import <Foundation/Foundation.h> @interface NSString (Utils) /** * 汉字的拼音 * * @return ...
- JavaScript 汉字与拼音互转终极方案 附JS拼音输入法
转:http://www.codeceo.com/article/javascript-pinyin.html 前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的 ...
- SQL汉字转拼音函数-支持首字母、全拼
SQL汉字转拼音函数-支持首字母.全拼 FROM :http://my.oschina.net/ind/blog/191659 作者不详 --方法一sqlserver汉字转拼音首字母 --调用方法 s ...
- 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法
前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼音首字母却要引入200kb的字 ...
- C#汉字转拼音(支持多音字)
之前由于项目需要,中间需要一个汉字转拼音和首拼的功能来做查询,感觉这种功能基本已经成熟化了,于是查找了相关的代码,首先引入眼帘的是下面两篇文章 1.C# 汉字转拼音(支持GB2312字符集中所有汉字) ...
- C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual S ...
- C#汉字转拼音帮助类
using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressi ...
- js汉字与拼音互转终极方案,附简单的JS拼音输入法【转】
github项目地址:https://github.com/liuxianan/pinyinjs 完整demo演示:http://demo.liuxianan.com/pinyinjs/ 汉字转拼音: ...
- MySQL按照汉字的拼音排序
按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序: 如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字37 ...
- Java汉字转拼音
import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCase ...
随机推荐
- 浅谈设计模式--单例模式(Singleton Pattern)
题外话:好久没写blog,做知识归纳整理了.本来设计模式就是个坑,各种文章也写烂了.不过,不是自己写的东西,缺少点知识的存在感.目前还没做到光看即能记住,得写.所以准备跳入设计模式这个大坑. 开篇先贡 ...
- java web 的标准目录结构(zz)
http://blog.csdn.net/bluesnail216/article/details/7744607 --yourproject --src --java 运行的j ...
- 20135202闫佳歆--week 8 实验:理解进程调度时机跟踪分析进程调度与进程切换的过程--实验及总结
week 8 实验:理解进程调度时机跟踪分析进程调度与进程切换的过程 1.环境搭建: rm menu -rf git clone https://github.com/megnning/menu.gi ...
- 微信小程序全选,微信小程序checkbox,微信小程序购物车
微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组 1.标题titl ...
- Django实际站点项目开发经验谈
开发了两个月的Django站点正式上线了,看着网站从无到有,从前端到后台,从本地开发到环境部署,一点一滴的堆砌成型,着实带给我不小的乐趣. Django站点介绍: 开发环境:阿里云服务器centos6 ...
- EF实体框架之CodeFirst二
在codefirst一中也说了Mapping是实体与数据库的纽带,model通过Mapping映射到数据库,我们可以从数据库的角度来分析?首先是映射到数据库,这个是必须的.数据库里面一般包括表.列.约 ...
- css的垂直居中
请先看博客:http://www.jb51.net/css/39629.html
- [Bug]当IDENTITY_INSERT设置为OFF时,不能为表“xx”中的标识列插入显示的值
写在前面 在设计数据库表时,将主键设置为了自增的.在使用linq to sql的时候,添加数据,出现此错误. 解决方案 找到linq to sql生成的**.dbml文件,在对应的表上面右键修改其属性 ...
- GCD 深入理解:第一部分
虽然 GCD 已经出现过一段时间了,但不是每个人都明了其主要内容.这是可以理解的:并发一直很棘手,而 GCD 是基于 C 的 API ,它们就像一组尖锐的棱角戳进 Objective-C 的平滑世界. ...
- 每天一个linux命令(32):wc命令
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...