c# 根据中文汉字获取到拼音
public static String ConvertToPinyin(String str)
{
if (String.IsNullOrEmpty(str)) return String.Empty; var sb = new StringBuilder(str.Length * );
var chs = str.ToCharArray(); for (var j = ; j < chs.Length; j++)
{
sb.Append(Get(chs[j]));
} return sb.ToString();
}
public static String Get(Char ch)
{
// 拉丁字符
if (ch <= '\x00FF') return ch.ToString(); // 标点符号、分隔符
if (Char.IsPunctuation(ch) || Char.IsSeparator(ch)) return ch.ToString(); // 非中文字符
if (ch < '\x4E00' || ch > '\x9FA5') return ch.ToString(); var arr = Encoding.GetEncoding("gb2312").GetBytes(ch.ToString());
//Encoding.Default默认在中文环境里虽是GB2312,但在多变的环境可能是其它
//var arr = Encoding.Default.GetBytes(ch.ToString());
var chr = (Int16)arr[] * + (Int16)arr[] - ; //***// 单字符--英文或半角字符
if (chr > && chr < ) return ch.ToString();
#region 中文字符处理 // 判断是否超过GB2312-80标准中的汉字范围
if (chr > lastChCode || chr < firstChCode)
{
return ch.ToString(); ;
}
// 如果是在一级汉字中
else if (chr <= lastOfOneLevelChCode)
{
// 将一级汉字分为12块,每块33个汉字.
for (int aPos = ; aPos >= ; aPos--)
{
int aboutPos = aPos * ;
// 从最后的块开始扫描,如果机内码大于块的第一个机内码,说明在此块中
if (chr >= pyValue[aboutPos])
{
// Console.WriteLine("存在于第 " + aPos.ToString() + " 块,此块的第一个机内码是: " + pyValue[aPos * 33].ToString());
// 遍历块中的每个音节机内码,从最后的音节机内码开始扫描,
// 如果音节内码小于机内码,则取此音节
for (int i = aboutPos + ; i >= aboutPos; i--)
{
if (pyValue[i] <= chr)
{
// Console.WriteLine("找到第一个小于要查找机内码的机内码: " + pyValue[i].ToString());
return pyName[i];
}
}
break;
}
}
}
// 如果是在二级汉字中
else
{
int pos = Array.IndexOf(otherChinese, ch.ToString());
if (pos != decimal.MinusOne)
{
return otherPinYin[pos];
}
}
#endregion 中文字符处理 return String.Empty;
}
c# 根据中文汉字获取到拼音的更多相关文章
- java获取中文汉字的所有拼音
java获取中文汉字的所有拼音 中文汉字可能有很多读音,java中分别用1,2,3,4来区别,例如“作”字,就有三个读音,zuo1,zuo2,zuo4. java获取汉字读音拼音代码如下所示: S ...
- C#中实现输入汉字获取其拼音(汉字转拼音)的2种方法
主要介绍了C#中实现输入汉字获取其拼音(汉字转拼音)的2种方法,本文分别给出了使用微软语言包.手动编码实现两种实现方式,需要的朋友可以参考下 本文刚发布时,只写了一个实现方式,使用的是微软的语言包,但 ...
- Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序
发布时间:2018-11-16 技术:Android 概述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 简体中文 拼音排 ...
- asp.net 获取汉字字符串的拼音首字母,含多音字
需求:在很多时候数据查询的时候,我们希望输入某个人姓名的拼音首字母进行查询,例如“潘长江”,输入“pcj”,就能搜索潘长江相关信息. 实现: #region 获取汉字转换拼音 首字母 public s ...
- 简单测试--C#实现中文汉字转拼音首字母
第一种: 这个是自己写的比较简单的实现方法,要做汉字转拼音首字母,首先应该有一个存储首字母的数组,然后将要转拼音码的汉字与每个首字母开头的第一个汉字即“最小”的汉字作比较,这里的最小指的是按拼音规则比 ...
- php根据汉字获取拼音(php基于拼音搜索实现原理)
php根据汉字获取拼音(php基于拼音搜索实现原理) 代码一:获取字符串汉字首字母,兼容GBK和UTF-8 <?php function getfirstchar($s0){ //获取单个汉 ...
- JS实现获取汉字首字母拼音、全拼音及混拼音的方法
本文实例讲述了JS实现获取汉字首字母拼音.全拼音及混拼音的方法.分享给大家供大家参考,具体如下: 这里需要用到一个js获取汉字拼音的插件,可点击此处本站下载. 运行效果如下: 完整示例代码: ? 1 ...
- C# 汉字获取拼音首字母,给数据库中的姓名添加首字母
本方案采用微软官方语言包 (下载链接: https://pan.baidu.com/s/10I1bhTdFr4-q_xKVHuEzMA 提取码: p3nk ChnCharInfo.dll 用于获取首字 ...
- String与StringBuilder相互转换以及获取字符串中第一个中文汉字
String与StringBuilder相互转换 1. StringBuilder转为String StringBuilder sb = new StringBuilder(); sb.append( ...
随机推荐
- IOS中http请求使用cookie
http://rainbird.blog.51cto.com/211214/805173 IOS中http请求使用cookie 2012-03-13 23:04:30 标签:http 记录 龙的传人 ...
- Tree(prime)
Tree Time Limit : 6000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- SecureCRT中文显示乱码的解决方法
注:本文出自:http://riching.iteye.com/blog/349754 最近开始用SecureCRT登陆linux系统,由于是新手,很多问题不清楚,碰到显示中文乱码的问题,困扰了好几天 ...
- vs2010安装svn插件
vs2010安装svn插件及简单使用 1.下载安装程序,安装 2.配置vs2010 3.check out工程 1.下载安装程序,安装 2.配置vs2010 3.check out工程 Open th ...
- iOS开发之网络请求(基于AFNetworking的再封装)
最近一直很忙也没有什么时间写博客了.放假了休息一下,就写一篇博客来总结一下最近做项目中出现过的问题吧!!! 首先,在项目中我的起到了什么作用,无非就是把美工(UI设计师)给我们的图显示出来,然后再和服 ...
- pagination jquery最简单的分页【无刷新和刷新都通用】
参数说明 参数名 描述 参数值 maxentries 总条目数 必选参数,整数 items_per_page 每页显示的条目数 ...
- SSR服务端一键安装脚本
支持新协议混淆,SSR服务端一键安装脚本 Shadowsocks-R 是项目 shadowsocks 的增强版,用于方便地产生各种协议接口.实现为在原来的协议外套一层编码和解码接口,不但可以伪装成 ...
- python基础教程
转自:http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html Python快速教程 作者:Vamei 出处:http://www.cn ...
- Django建立helloworld自定义页面
目录介绍 按照上一篇初学Django首先建立起一个默认站点,生成如下的目录结构: manage.py 一种命令行工具,允许你以多种方式与该 Django 项目进行交互. 键入python manage ...
- css3波浪形loading动画
css3做个第一个动画,主要点在box-shadow和background的变化,虽然不难,但是还是有一定的技巧性的!备注下 html <div class="loading" ...