汉字提取首字母

public  class GetCNSpell
    {

            /// <summary>  
            /// 提取汉字首字母   
            /// <param name="strText">需要转换的字</param>  
            /// <returns>转换结果</returns>  
            public 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 string GetLowerChineseSpell(string strText)
            {
                return GetChineseSpell(strText).ToLower();
            }
            /// <summary>  
            /// 把提取的字母变成大写  
            /// </summary>  
            /// <param name="myChar">需要转换的字符串</param>  
            /// <returns>转换结果</returns>  
            public string GetUpperChineseSpell(string strText)
            {
                return GetChineseSpell(strText).ToUpper();
            }
            /// <summary>  
            /// 获取单个汉字的首拼音  
            /// </summary>  
            /// <param name="myChar">需要转换的字符</param>  
            /// <returns>转换结果</returns>  
            public 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;
            }
        }

转载于:https://www.cnblogs.com/yuerdongni/archive/2012/08/12/2635252.html

MFC是Microsoft Foundation Class库的简称,它是用于开发Windows桌面应用程序的一个C++类库。在MFC中提取汉字首字母可以通过以下步骤实现: 1. 将汉字字符串转换为Unicode编码:先将字符串转换为宽字符型CString类型对象,然后使用WideCharToMultiByte函数将其转换为Unicode编码。 2. 提取汉字首字母:遍历汉字字符串的每个字符,对于每个汉字字符,判断其Unicode编码是否在汉字范围内(0x4E00-0x9FA5)。 3. 对于汉字字符,利用其Unicode编码计算出首字母的索引:首先减去0x4E00(或转换为十进制得19968),然后除以94将其余数与0x41(十进制为65)相加。 4. 将首字母索引转换为对应的字符:加上0x41得到的索引即为首字母的ASCII码,使用对应的ASCII码转换为字符,即可得到首字母。 5. 将提取首字母存储起来:可以使用一个字符型变量或字符串对象,依次将每个汉字首字母拼接起来。 需要注意的是,在提取汉字首字母时,还需要考虑到多音字的情况,因为一个汉字可能对应多个不同的音节。一种常用的方法是使用拼音库,将汉字转换为拼音,然后提取拼音的首字母作为汉字首字母。 以上是一种基于汉字Unicode编码的提取首字母的方法,在实际应用中,还可以使用其他的提取规则,如使用拼音库或其他语言处理库来实现。总之,根据具体需求选择合适的方法,可以实现汉字首字母提取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值