C# 汉字(中文)转拼音或拼音首字母 以及 汉字(中文)转五笔首笔画对于字母

一、汉字(中文)转拼音首字母

——上代码——

/// <summary>
/// 把汉字转换成拼音(全拼),如果非汉子,原样输出
/// </summary>
/// <param name="hzString">汉字字符串</param>
/// <returns>转换后的拼音(全拼)字符串</returns>
public static string GetAllPYLetters(string hzString)
{
   
	// 匹配中文字符
    Regex regex = new Regex("^[\u4e00-\u9fa5]$");
    byte[] array = new byte[2];
    string pyString = "";
    int chrAsc = 0;
    int i1 = 0;
    int i2 = 0;
    char[] noWChar = hzString.ToCharArray();
    for (int j = 0; j < noWChar.Length; j++)
    {
   
    	// 中文字符
        if (regex.IsMatch(noWChar[j].ToString()))
        {
   
	        array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString());
            i1 = (short)(array[0]);
            i2 = (short)(array[1]);
            chrAsc = i1 * 256 + i2 - 65536;
            if (chrAsc > 0 && chrAsc < 160)
            {
   
            	pyString += noWChar[j];
            }
            else
            {
   
            	// 修正部分文字
                if (chrAsc == -9254)  // 修正“圳”字
                {
   
                	pyString += "Zhen";
                }
                else
                {
   
                	for (int i = (pyValue.Length - 1); i >= 0; i--)
                   {
   
                   		if (pyValue[i] <= chrAsc)
                        {
   
                        	pyString += pyName[i];
                            break;
                         }
                    }
                  }
            }
		}
        // 非中文字符
        else
        {
   
        	pyString += noWChar[j].ToString();
        }
    }
	return pyString;
}


/// <summary> 
/// 汉字转拼音缩写 
/// </summary> 
/// <param name="str">要转换的汉字字符串</param> 
/// <returns>拼音缩写</returns>
public static string GetPYString(string str)
{
   
	string tempStr = "";
	foreach (char c in str)
	{
   
		if ((int)c >= 33 && (int)c <= 126)
		{
   
			//字母和符号原样保留 
			tempStr += c.ToString();
        }
        else
        {
   
        	//累加拼音声母 
        	tempStr += GetPYChar(c.ToString());
        }
    }
    if (tempStr.Length>=20)
    {
   
    	tempStr = tempStr.Substring(0, 20);
    }
    tempStr = TrimCharacter(tempStr);
    return tempStr;
}

/// <summary>
/// 替换字符
/// </summary>
/// <param name="asString"></param>
/// <returns></returns>
public static string TrimCharacter(string asString)
{
   
	string sResult = "";
	string sCharacterRegx = "[^a-zA-Z0-9\u4E00-\u9FFF]";
	Regex rgVal = new Regex(sCharacterRegx);
	sResult = rgVal.Replace(asString, "");
	return sResult;
}

 /// <summary> 
/// 取单个字符的拼音声母 
/// </summary> 
/// <param name="c">要转换的单个汉字</param> 
/// <returns>拼音声母</returns> 
private static string GetPYChar(string c)
{
   
	var charStr = string.Empty;
	if (c.Trim().Length == 0)
    {
   
    	charStr="";
    }
    byte[] array = new byte[2];
    array = System.Text.Encoding.Default.GetBytes(c);
    if (array?.Length > 1)
    {
   
    	int i = (short) (array[0] - '\0')*256 + ((short) (array[1] - '\0'));
    	switch (i)
        {
   
        	case 0xB0A1:
        		charStr="*";
        		break;
        	case 0xB0C5:
        		charStr="a";
        		break;
        	case 0xB2C1:
        		charStr="b";
        		break;
        	case 0xB4EE:
        		charStr="c";
        		break;
        	case 0xB6EA:
        		charStr="d";
        		break;
        	case 0xB7A2:
        		charStr="e";
        		break;
        	case 0xB8C1:
        		charStr="f";
        		break;
        	case 0xB9FE:
        		charStr="g";
        		break;
        	case 0xBBF7:
        		charStr="h";
        		break;
        	case 0xBFA6:
        		charStr="j";
        		break;
        	case 0xC0AC:
        		charStr="k";
        		break;
        	case 0xC2E8:
        		charStr="l";
        		break;
        	case 0xC4C3:
        		charStr="m";
        		break;
        	case 0xC5B6:
        		charStr="n";
        		break;
        	case 0xC5BE:
        		charStr="o";
        		break;
        	case 0xC6DA:
        		charStr="p&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值