C# 获取汉字的拼音首字母

一种是把所有中文字符集合起来组成一个对照表;另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母。碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手动把该汉字移动到对应的拼音首字母队列,我们这里介绍第二种。

获取汉字拼音的首字母是一个在做项目的过程中经常需要用到的功能,今天我们主要来探讨下C# 获取汉字的拼音首字母

    static void Main(string[] args)
{ Console.WriteLine(GetSpellCode("asdf牛逼你水电费")) ;
Console.ReadKey();
} /// <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.Default.GetBytes(CnChar); //如果是字母,则直接返回 if (ZW.Length == 1)
{ return CnChar.ToUpper(); } else
{ // get the array of byte from the single char int i1 = (short)(ZW[0]); int i2 = (short)(ZW[1]); iCnChar = i1 * 256 + i2; } // iCnChar match the constant 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 <= 53640))
{ return "X"; }
else if ((iCnChar >= 53689) && (iCnChar <= 54480))
{ return "Y"; }
else if ((iCnChar >= 54481) && (iCnChar <= 55289))
{ return "Z"; }
else return ("?"); }

C# 获取汉字的拼音首字母和全拼(含源码)的更多相关文章

  1. (转载)delphi中获取汉字的拼音首字母

    delphi中获取汉字的拼音首字母1.py: array[216..247] of string = ({216}'CJWGNSPGCGNESYPB' + 'TYYZDXYKYGTDJNMJ' + ' ...

  2. sql获取汉字的拼音首字母的函数

    ql获取汉字的拼音首字母   if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and ...

  3. 获取汉字的拼音首字母--pinyin

    var pinyin = (function (){ var Pinyin = function (ops){ this.initialize(ops); }, options = { checkPo ...

  4. sql获取汉字的拼音首字母

    if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and xtype in (N'FN' ...

  5. C# 获取汉字的拼音首字母

    /// <summary> /// 在指定的字符串列表CnStr中检索符合拼音索引字符串 /// </summary> /// <param name="CnS ...

  6. SqlServer 笔记二 获取汉字的拼音首字母

    一.该函数传入字符串,返回数据为:如果为汉字字符,返回该字符的首字母,如果为非汉字字符,则返回本身. 二.用到的知识点:汉字对应的UNICODE值,汉字的排序规则. 三.数据库函数: )) ) AS ...

  7. SqlServer 获取汉字的拼音首字母

    一.该函数传入字符串,返回数据为:如果为汉字字符,返回该字符的首字母,如果为非汉字字符,则返回本身.二.用到的知识点:汉字对应的UNICODE值,汉字的排序规则.三.数据库函数: CREATE FUN ...

  8. C#获取包括一二级汉字的拼音 首字母

    C#获取包括一二级汉字的拼音 首字母 声母 汉字拼音转换 using System; using System.Collections.Generic; using System.Linq; usin ...

  9. js汉字转拼音首字母

    js汉字转拼音首字母 2018-04-09 阅读 1018 收藏 1 原链:segmentfault.com 分享到:   前端必备图书<JavaScript设计模式与开发实践> > ...

随机推荐

  1. c# CacheManager 缓存管理

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. 解压 boot.img

    ./split_bootimg.pl boot.img Page size: 2048 (0x00000800) Kernel size: 7062084 (0x006bc244) Ramdisk s ...

  3. android启动另一应用

    http://www.2cto.com/kf/201203/122910.html Android SDK中有这样一个API: public abstract Intent getLaunchInte ...

  4. [听听音乐]X-Ray Dog

    X-Ray Dog是一个专门为好莱坞电影预告配乐的音乐工作室. https://music.163.com/#/artist?id=105618 有空的时候听听.

  5. 登录和注册(Js)的写法

    今天在做小组项目的时候发现登录和注册的使用不是很熟,记录下来: <script> //弹出框中的css部分 input { font-family: Arial, sans-serif;} ...

  6. 【网络基础系列二】BOOTP、DHCP协议

    BOOTP 含义:BOOT Protocol,引导协议 作用:引导无盘计算机或者第一次启动的计算机获取以下网络配置信息: 主机的IP地址.子网掩码 路由器(网关)的IP地址 DNS服务器IP地址 C/ ...

  7. linux host=${host:-"localhost"}使用方法

    localhost=${host:-"localhost"} host 变量未设定或者为空,host取"-"后面的值;否则host=$host host=${h ...

  8. React + fetch API + 百度地图api + 跨域 填坑

    做项目遇到一个百度地图api 的跨域问题.由于使用fetch ,在调用类似 http://api.map.baidu.com/geocoder/v2/callback=renderReverse&am ...

  9. 分布式锁(Redis实现)

    1.分布式锁解决方案  1.采用数据库 不建议 性能不好 jdbc  2.基于Redis实现分布式锁(setnx)setnx也可以存入key,如果存入key成功返回1,如果存入的key已经存在了,返回 ...

  10. iOS:UITextField中文输入法输入时对字符长度的限制

      如题的问题,又是个让我抓狂了大半天的问题,还是做个记录,有与类似问题的同学可参考,但不一定对.具体问题还需具体分析.我遇到的需求是这样的:有一个输入框,输入框内输入文字,文字字数限制在20字.   ...