C# 獲取漢字的拼音首字母
更新時(shí)間:2015年06月26日 15:10:21 投稿:hebedich
一種是把所有中文字符集合起來(lái)組成一個(gè)對(duì)照表;另一種是依照漢字在Unicode編碼表中的排序來(lái)確定拼音的首字母。碰到多音字時(shí)就以常用的為準(zhǔn)(第一種方法中可以自行更改,方法為手動(dòng)把該漢字移動(dòng)到對(duì)應(yīng)的拼音首字母隊(duì)列,我們這里介紹第二種
獲取漢字拼音的首字母是一個(gè)在做項(xiàng)目的過(guò)程中經(jīng)常需要用到的功能,今天我們主要來(lái)探討下C# 獲取漢字的拼音首字母
/// <summary> /// 在指定的字符串列表CnStr中檢索符合拼音索引字符串 /// </summary> /// <param name="CnStr">漢字字符串</param> /// <returns>相對(duì)應(yīng)的漢語(yǔ)拼音首字母串</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> /// 得到一個(gè)漢字的拼音第一個(gè)字母,如果是一個(gè)英文字母則直接返回大寫(xiě)字母 /// </summary> /// <param name="CnChar">單個(gè)漢字</param> /// <returns>單個(gè)大寫(xiě)字母</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 ("?"); }
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
c# 調(diào)用.bat文件的實(shí)現(xiàn)代碼
c# 調(diào)用.bat文件主要利用了using System.Diagnostics;命名空間,大家可以參考下。2009-06-06C# 通過(guò)同步和異步實(shí)現(xiàn)優(yōu)化做早餐的時(shí)間
本文以一個(gè)簡(jiǎn)單的小例子—如何做一頓早餐及如何優(yōu)化做早餐的時(shí)間來(lái)讓大家具體了解一下同步和異步方法的區(qū)別,需要的朋友可以參考一下2021-12-12C#中Trim()、TrimStart()、TrimEnd()的用法介紹
這篇文章主要介紹了C#中Trim()、TrimStart()、TrimEnd()的用法,有需要的朋友可以參考一下2014-01-01C#實(shí)現(xiàn)日期時(shí)間的格式化輸出的示例詳解
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)日期時(shí)間的格式化輸出的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-03-03