话不多说,直接上代码,代码参考网上源码.其中存在X显示为?的问题.一共两种写法.

        /// <summary>/// 将输入字符串英文部分变为大写,中文取拼音首字母大写./// </summary>/// <param name="UnName"></param>/// <returns></returns>public static string GetCodstring(string UnName,string Coding){try{int i = 0;ushort key = 0;string strResult = string.Empty;Encoding unicode = Encoding.Unicode;Encoding gbk = Encoding.GetEncoding(Coding);byte[] unicodeBytes = unicode.GetBytes(UnName);byte[] gbkBytes = Encoding.Convert(unicode, gbk, unicodeBytes);while (i < gbkBytes.Length){if (gbkBytes[i] <= 127){strResult = strResult + ((char)gbkBytes[i]).ToString().ToUpper();i++;}#region 生成汉字拼音简码,取拼音首字母else{key = (ushort)(gbkBytes[i] * 256 + gbkBytes[i + 1]);if (key >= '\uB0A1' && key <= '\uB0C4')strResult = strResult + "A";else if (key >= '\uB0C5' && key <= '\uB2C0')strResult = strResult + "B";else if (key >= '\uB2C1' && key <= '\uB4ED')strResult = strResult + "C";else if (key >= '\uB4EE' && key <= '\uB6E9')strResult = strResult + "D";else if (key >= '\uB6EA' && key <= '\uB7A1')strResult = strResult + "E";else if (key >= '\uB7A2' && key <= '\uB8C0')strResult = strResult + "F";else if (key >= '\uB8C1' && key <= '\uB9FD')strResult = strResult + "G";else if (key >= '\uB9FE' && key <= '\uBBF6')strResult = strResult + "H";else if (key >= '\uBBF7' && key <= '\uBFA5')strResult = strResult + "J";else if (key >= '\uBFA6' && key <= '\uC0AB')strResult = strResult + "K";else if (key >= '\uC0AC' && key <= '\uC2E7')strResult = strResult + "L";else if (key >= '\uC2E8' && key <= '\uC4C2')strResult = strResult + "M";else if (key >= '\uC4C3' && key <= '\uC5B5')strResult = strResult + "N";else if (key >= '\uC5B6' && key <= '\uC5BD')strResult = strResult + "O";else if (key >= '\uC5BE' && key <= '\uC6D9')strResult = strResult + "P";else if (key >= '\uC6DA' && key <= '\uC8BA')strResult = strResult + "Q";else if (key >= '\uC8BB' && key <= '\uC8F5')strResult = strResult + "R";else if (key >= '\uC8F6' && key <= '\uCBF9')strResult = strResult + "S";else if (key >= '\uCBFA' && key <= '\uCDD9')strResult = strResult + "T";else if (key >= '\uCDDA' && key <= '\uCEF3')strResult = strResult + "W";else if (key >= '\uCEF4' && key <= '\uD1B8')strResult = strResult + "X";else if (key >= '\uD1B9' && key <= '\uD4D0')strResult = strResult + "Y";else if (key >= '\uD4D1' && key <= '\uD7F9')strResult = strResult + "Z";elsestrResult = strResult + "?";i = i + 2;}#endregion}return strResult;}catch (Exception e){Console.WriteLine(e.ToString());return "";}}/// <summary> /// 在指定的字符串列表CnStr中检索符合拼音索引字符串 /// </summary> /// <param name="CnStr">汉字字符串</param> /// <returns>相对应的汉语拼音首字母串</returns> public static string GetSpellCode(string CnStr){string strTemp = "";int iLen = CnStr.Length;int i = 0;for (i = 0; i <= iLen - 1; i++){strTemp += GetCharSpellCode(CnStr.Substring(i, 1));}return strTemp;}/// <summary> /// 得到一个汉字的拼音第一个字母,如果是一个英文字母则直接返回大写字母 /// </summary> /// <param name="CnChar">单个汉字</param> /// <returns>单个大写字母</returns> private static string GetCharSpellCode(string CnChar){long iCnChar;byte[] ZW = System.Text.Encoding.GetEncoding("GB2312").GetBytes(CnChar);//如果是字母,则直接返回 if (ZW.Length == 1)return CnChar.ToUpper();else{// 从单个字符获取字节数组int i1 = (short)(ZW[0]);int i2 = (short)(ZW[1]);iCnChar = i1 * 256 + i2;}/* 'A': //45217..45252 // 'B': //45253..45760 // 'C': //45761..46317 // 'D': //46318..46825 // 'E': //46826..47009 // 'F': //47010..47296 // 'G': //47297..47613 // 'H': //47614..48118 // 'J': //48119..49061 // 'K': //49062..49323 // 'L': //49324..49895 // 'M': //49896..50370 // 'N': //50371..50613 // 'O': //50614..50621 // 'P': //50622..50905 // 'Q': //50906..51386 // 'R': //51387..51445 // 'S': //51446..52217 // 'T': //52218..52697// 汉字没有没有U,V 开始的// 'W': //52698..52979 // 'X': //52980..53688// 'Y': //53689..54480 // 'Z': //54481..55289 // iCnChar 匹配常量*/if ((iCnChar >= 45217) && (iCnChar <= 45252))return "A";else if ((iCnChar >= 45253) && (iCnChar <= 45760))return "B";else if ((iCnChar >= 45761) && (iCnChar <= 46317))return "C";else if ((iCnChar >= 46318) && (iCnChar <= 46825))return "D";else if ((iCnChar >= 46826) && (iCnChar <= 47009))return "E";else if ((iCnChar >= 47010) && (iCnChar <= 47296))return "F";else if ((iCnChar >= 47297) && (iCnChar <= 47613))return "G";else if ((iCnChar >= 47614) && (iCnChar <= 48118))return "H";else if ((iCnChar >= 48119) && (iCnChar <= 49061))return "J";else if ((iCnChar >= 49062) && (iCnChar <= 49323))return "K";else if ((iCnChar >= 49324) && (iCnChar <= 49895))return "L";else if ((iCnChar >= 49896) && (iCnChar <= 50370))return "M";else if ((iCnChar >= 50371) && (iCnChar <= 50613))return "N";else if ((iCnChar >= 50614) && (iCnChar <= 50621))return "O";else if ((iCnChar >= 50622) && (iCnChar <= 50905))return "P";else if ((iCnChar >= 50906) && (iCnChar <= 51386))return "Q";else if ((iCnChar >= 51387) && (iCnChar <= 51445))return "R";else if ((iCnChar >= 51446) && (iCnChar <= 52217))return "S";else if ((iCnChar >= 52218) && (iCnChar <= 52697))return "T";else if ((iCnChar >= 52698) && (iCnChar <= 52979))return "W";else if ((iCnChar >= 52980) && (iCnChar <= 53688))return "X";else if ((iCnChar >= 53689) && (iCnChar <= 54480))return "Y";else if ((iCnChar >= 54481) && (iCnChar <= 55289))return "Z";else return ("?");}

转载于:https://www.cnblogs.com/dygood/p/7595519.html

C# 获取汉字拼音首字母(修正X问题,真正修正)相关推荐

  1. 【C#】获取汉字拼音首字母和全拼

    文章目录 利用CJK统一表意符号获取首字母 获取首字母和全拼 另附sql server解决方案 来源 java的同学可以了解下pinyin4j,js可以了解ChinesePY.js 获取拼音的意义多在 ...

  2. php获取汉字的首字母,php获取汉字拼音首字母的方法

    现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序.这是中国人大多数使用的排序方法.那么在php程序中该如何操作呢? 下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的 ...

  3. Excel中如何获取汉字拼音首字母

    Excel中如何获取汉字拼音首字母 在工作中,为了方便查询.排序或者编码,需要生成汉字内容信息的首字母,如果信息很多的话,一个个录入是一件很麻烦的事情,下面给大家介绍一个便捷的方法,轻松获取汉字拼音首 ...

  4. iOS 获取汉字拼音首字母

    iOS获取汉字首字母 这个一般用在通讯里排序居多,我这里就是用到了通讯里的排序,然后就来mark一下,记录. 核心代码 char pinyinFirstLetter(unsigned short ha ...

  5. iOS获取汉字拼音首字母的方法

    iOS获取汉字拼音首字母的方法 之前在项目中需要根据昵称的首字母进行排序,蹚了几个坑,今天记录一下.其实iOS系统封装的就有获取汉字首字母的方法,但不推荐,想看最优解的同学直接略过: var name ...

  6. php获取拼音首字母排序,PHP获取汉字拼音首字母的方法

    PHP获取汉字拼音首字母的方法: function getfirstchar($s0){ $fchar = ord($s0{0}); if($fchar >= ord("A" ...

  7. 在delphi 7中实现获取汉字拼音首字母

    公司的餐饮系统出品的助记码,还没实现自动从出品名称获取汉字拼音首字母. 所以在网上找了三种解决方法, 一种是kaguo 的使用常用汉字拼音查找方法,这种代码十分简单,实现方便,但是这种代码仅仅是一级字 ...

  8. sqlserver 获取汉字拼音首字母

    sqlserver 获取汉字拼音首字母 调用方式: select dbo.fun_getPY('张三') as result 脚本: create function [dbo].[fun_getPY] ...

  9. 在Excel中如何获取汉字拼音首字母?

    转自:https://jingyan.baidu.com/article/0a52e3f43c3f6abf63ed7259.html百度经验 在Excel中如何获取汉字拼音首字母?| 在工作中,为了方 ...

  10. C# 获取汉字拼音首字母

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...

最新文章

  1. 汇编程序设计与计算机体系结构软件工程师教程笔记:处理器、寄存器简介
  2. [十三]JavaIO之PushBackInputStream
  3. resttemplate 请求重试_使用Spring Cloud Ribbon重试请求
  4. irrlicht v1.6 例程18 Splitscreen
  5. asterisk 扩展应用(3)——IVR 实现
  6. python r转义_Python快速入门系列之二:还学不会我直播跪搓衣板
  7. 配置 springboot 的 run dashboard
  8. 实用分享-Visual Studio图像查看插件(Image Watch)
  9. Tuple Class
  10. selenium处理动态加载数据
  11. StretchDIBits函数显示图片
  12. CH341驱动安装失败解决方法
  13. Roslyn 如何获得一个类的引用
  14. WindowsServer2012R2 SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)解决办法
  15. 使用sql服务器发送贺卡_发送免费电子贺卡的最佳网站
  16. SICP中关于兑换零钱的练习
  17. 【modlearts】华为人工智能平台_modelarts平台系列教程3_预置算法_图像识别1
  18. 学习博士答辩之后的感想:
  19. PEM文件和private.key文件生成Tomcat服务器所需的jks文件(配置SSL用)
  20. Ubuntu下mosquitto 的使用

热门文章

  1. 局部异常因子算法-Local Outlier Factor(LOF)
  2. Redis Cluster 集群部署
  3. Linux判断服务进程存在,存在则重启,不存在则启动
  4. Linux UVC driver 独立交叉编译记录
  5. 某淘宝卖家靠微头条引流,月销1000单
  6. 计算机操作 操作鉴定试题及答案,计算机操作员初级试题及答案
  7. Manner-Kendall(M-K)---突变检验
  8. Kafka3.0 提交offset方式
  9. 经验分享——本科非技术女
  10. 纷享销客高燕:回归第一性原理,B2B企业如何向精益化要增长