#region  根据中文生成首字母(大写)/// <summary>/// 根据中文生成首字母(大写)/// </summary>/// <param name="strString"></param>/// <returns></returns>public static string GetPingying(string strString){string tempStr = "";//去掉字符串中的特殊符号var str = Regex.Replace(strString, "[ \\[ \\] \\^ \\-_*×――(^)$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,.;\"‘’“”-]", "");foreach (char c in str){if ((int)c >= 33 && (int)c <= 126){//字母转换为大学   tempStr += c.ToString().ToUpper();}else{//累加拼音声母   tempStr += GetCharSpellCode(c.ToString());}}return tempStr;}/// <summary>/// 得到一个汉字的拼音第一个字母,如果是一个英文字母则直接返回大写字母/// </summary>/// <param name="CnChar">单个汉字</param>/// <returns>单个大写字母</returns>private static string GetCharSpellCode(string CnChar){long iCnChar;byte[] ZW = System.Text.Encoding.Default.GetBytes(CnChar);//如果是字母,则直接返回首字母if (ZW.Length == 1){return CnChar.ToUpper().Substring(0, 1);}else{// get the array of byte from the single charint i1 = (short)(ZW[0]);int i2 = (short)(ZW[1]);iCnChar = i1 * 256 + i2;}// iCnChar match the constantif ((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 ("?");return ("");}#endregion

注意:可能有一些字识别不了,“呃”就不能识别

第二种方法:

根据微软语言包将汉字转换为拼音,需要引入微软的插件:ChnCharInfo.dll

插件下载地址:https://files.cnblogs.com/files/likui-bookHouse/Microsoft.International.Converters.PinYinConverter.1.0.0.rar

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.International.Converters.PinYinConverter;namespace HYS.BT.AppSrv.Common.Util
{/// <summary>/// 拼音转换/// </summary>public static class PinyinConverter{#region 汉字转化为拼音/// <summary> /// 汉字转化为拼音/// </summary> /// <param name="str">汉字</param> /// <returns>全拼</returns> public static string GetPinyin(string str){string r = string.Empty;foreach (char obj in str){try{ChineseChar chineseChar = new ChineseChar(obj);string t = chineseChar.Pinyins[0].ToString();r += t.Substring(0, t.Length - 1);}catch{r += obj.ToString();}}return r;}#endregion#region 汉字转化为拼音首字母/// <summary> /// 汉字转化为拼音首字母/// </summary> /// <param name="str">汉字</param> /// <returns>首字母</returns> public static string GetFirstPinyin(string str){string r = string.Empty;foreach (char obj in str){try{ChineseChar chineseChar = new ChineseChar(obj);string t = chineseChar.Pinyins[0].ToString();r += t.Substring(0, 1);}catch{r += obj.ToString();}}return r;}#endregion}
}

注意:如果是数字,英文就原样返回,有的汉字获取的拼音有问题。如“广”

如图:"广"我追踪后发现被翻译成了"AN"

果然,中国汉字是世界难题啊!

转载于:https://www.cnblogs.com/likui-bookHouse/p/10033069.html

根据中文名,自动生成首字母的拼音码或拼音码(两种方法)相关推荐

  1. SpringBoot的整合(自动生成工具的使用mysql5和mysql8版本的两种版本和两种生成方式)

    注意:本篇文章连接的数据库为mysql8.0.16版本的,跟低版本的稍微有些不同. 使用mybatis进行开发的时候,model类.mapper.xml.mapper接口等都自己写十分浪费时间,这里介 ...

  2. .NET生成常用16、32位MD5加密的两种方法

    //MD5加密函数比较复杂,在.NET中我们不需要编写底层的算法. //平台已经提供两个生成MD5加密的方法: //经过改动一点就可以生成如现在DVBBS等论坛中使用的MD5密码 //⑴:使用C:\W ...

  3. android自动隐藏虚拟键,Android 隐藏底部虚拟键的两种方法

    方法一  滑动屏幕 可重新显示出来 protected void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > 1 ...

  4. oracle 中文拼音取首字母,ORACLE依据中文拼音首字母排序、取得中文拼音首字母函数...

    当前位置:我的异常网» 数据库 » ORACLE依据中文拼音首字母排序.取得中文拼音首字母 ORACLE依据中文拼音首字母排序.取得中文拼音首字母函数 www.myexceptions.net  网友 ...

  5. Word如何取消自动拼写检查、自动句首字母大写

    Word如何取消自动拼写检查.自动句首字母大写 用了Word这么久,最讨厌的两个功能就是自动拼写检查和自动句首字母大写.以前是懒去把这功能关了,今天实在忍不住了,下面贴解决方案: 1.Word取消自动 ...

  6. 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你

    在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 目录 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 1.文章中的标题较多,每个单独调整格式太费劲,这里我们用一 ...

  7. php 自动生成查询密码,php自动生成新密码的两种方法

    php自动生成新密码的两种方法,方法一采用的是随机种子,方法是乱序数组,异曲同工吧. 有需要的朋友可以参考下. 方法1: 代码示例: /* * php自动生成新密码自定义函数 适用环境: PHP5.2 ...

  8. 用word2007自动生成目录的两种方法

                                用word2007自动生成目录的两种方法 看到很多人还在手工编写word的目录,感觉很浪费时间,下面跟大家分享一下,在word2007及word ...

  9. 使用MyBatis Generator自动生成持久层CRUD代码的两种方法

    最近在使用MyBatis,得知可以利用MyBatis Generator自动生成实体类.DAO接口和Mapping映射文件.当数据库中的表多的时候,让你不用再手写Mapping映射文件,和实体类,就可 ...

最新文章

  1. mysql-主从服务器同步搭建
  2. 创意组竞赛正式文档中修正内容
  3. 阿里达摩院青橙奖再颁发!10名大陆青年科学家各获100万,最小获奖者28岁
  4. 虚拟化VMware之存储与虚拟机主机管理(1)
  5. 使用ng-container标签在SAP Spartacus里插入UI
  6. iPhone 12顶配版延期到10月:刘海仍在 后置3摄+雷达
  7. html文本文档整人代码,一些bat恶搞代码
  8. 增长量计算n+1原则_资料分析听课笔记
  9. 责任链模式的高级用法
  10. 记录一次腾讯面试经历
  11. 快来带您了解中秋节的前世今生
  12. MATLAB | 全网唯一,双变量及三变量映射图表的MATLAB绘制
  13. SD卡、记忆棒等内存卡的数据恢复方法
  14. 缅因大学欧洛诺分校计算机科学,缅因大学申请要求高不高?开学时间是什么时候?...
  15. Discuz蜘蛛统计seo插件-蜘蛛统计插件
  16. Mac电脑系统降级至10.15 Catalina(2020末代intel)
  17. easyui 合并列_Easyui DataGrid 合并单元格
  18. 通过禁止js来禁止网站自动重定向
  19. 相电流与线电流有什么区别
  20. 多国金融监管和投资机构代表齐聚香港“HashKey2019数字资产全球峰会”,共探从“江湖”到“庙堂”之路...

热门文章

  1. 数据分析:论文数据统计
  2. 中国企业互联网CEO峰会”听e签宝金宏洲讲新趋势
  3. Geek Talk 037:我们说知识图谱时候,我们在想什么
  4. codeforces解题总结:#693 (Div. 3)
  5. iOS bitCode -- 360 加固保加固 iOS 应用所遇到的问题
  6. 一文深入JQuery
  7. 跟着java学瑜伽_为什么不建议网上跟着视频练习瑜伽?
  8. Mxgraph 使用教程(2):mxgraph常用方法介绍
  9. 白盒测试之基本路径/线性无关路径概念
  10. redis的单机、哨兵、集群模式对比