Windows Phone實用開發技巧(34):擷取漢字拼音的首字母

來源:互聯網
上載者:User

在之前的文章中曾經介紹過如何在Windows Phone下擷取漢字的所有拼音,當時的方法是將所有的漢字、拼音放到一個集合中,然後匹配尋找的,這樣就會導致一個問題,就是沒有在集合中的漢字是找不到拼音的,也會有一些異常情況的發生。

今天介紹一種新的方法,使用codeplex上開源的項目GB2312 for Silverlight.

1.建立一個項目,命名為mangoGB2312

2.將GB2312 for Silverlight項目中的兩個檔案都拷貝至項目目錄GB2312下,並且修改GB2312Encoding.cs的命名空間為mangoGB2312.GB2312,如所示

3.將gb2312.bin的產生方式修改為嵌入式資源,如

4.編寫提取漢字首字母的函數,我已經封裝到一個協助類裡面了,代碼如下:

public class FirstLetterHelper{    /// <summary>     /// 得到一個漢字的拼音第一個字母,如果是一個英文字母則直接返回大寫字母     /// </summary>     /// <param name="CnChar">單個漢字</param>     /// <returns>單個大寫字母</returns>     public static string GetCharSpellCode(string CnChar)    {        long iCnChar;        GB2312Encoding encoder = new GB2312Encoding();        byte[] ZW = encoder.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 ("#");    }}

5.測試程式,將模擬器中的鍵盤勾選上中文IME,如

6.輸入一些文字後,點擊GET就可以得到漢字的首字母了

你可以在這裡找到本篇文章的原始碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.