首页 > 学院 > 开发设计 > 正文

C#提取汉字首字母

2019-11-17 04:07:47
字体:
来源:转载
供稿:网友
view plaincopy to clipboardPRint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
using System;   
using System.Collections.Generic;   
using System.Text;   
  
namespace StringOption   
{   
    public class GetStringSpell   
    {   
        /// <summary>   
        /// 提取汉字首字母   
        /// </summary>   
        /// <param name="strText">需要转换的字</param>   
        /// <returns>转换结果</returns>   
        public static string GetChineseSpell(string strText)   
        {   
            int len = strText.Length;   
            string myStr = "";   
            for (int i = 0; i < len; i++)   
            {   
                myStr += getSpell(strText.Substring(i, 1));   
            }   
            return myStr;   
        }   
        /// <summary>   
        /// 把提取的字母变成大写   
        /// </summary>   
        /// <param name="strText">需要转换的字符串</param>   
        /// <returns>转换结果</returns>   
        public static string GetLowerChineseSpell(string strText)   
        {   
            return GetChineseSpell(strText).ToLower();   
        }   
        /// <summary>   
        /// 把提取的字母变成大写   
        /// </summary>   
        /// <param name="myChar">需要转换的字符串</param>   
        /// <returns>转换结果</returns>   
        public static string GetUpperChineseSpell(string strText)   
        {   
            return GetChineseSpell(strText).ToUpper();   
        }   
        /// <summary>   
        /// 获取单个汉字的首拼音   
        /// </summary>   
        /// <param name="myChar">需要转换的字符</param>   
        /// <returns>转换结果</returns>   
        public static string getSpell(string myChar)   
        {   
            byte[] arrCN = System.Text.Encoding.Default.GetBytes(myChar);   
            if (arrCN.Length > 1)   
            {   
                int area = (short)arrCN[0];   
                int pos = (short)arrCN[1];   
                int code = (area << 8) + pos;   
                int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };   
                for (int i = 0; i < 26; i++)   
                {   
                    int max = 55290;   
                    if (i != 25) max = areacode[i + 1];   
                    if (areacode[i] <= code && code < max)   
                    {   
                        return System.Text.Encoding.Default.GetString(new byte[] { (byte)(65 + i) });   
                    }   
                }   
                return "_";   
            }   
            else return myChar;   
        }   
    }   
}  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表