看看这里,希望对你有帮助
http://expert.csdn.net/Expert/topic/2177/2177373.xml?temp=.9096186

解决方案 »

  1.   

    我在C#中做了一个汉字转拼音首字母:using System;namespace HzChangePy
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    public class HzChangePying
    {
    public HzChangePying()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } public string HzChangePyFirst(string p_Character)//传递要转换的字符串
    {
    string EndResult = "";//用于存储最终结果
    char MiddleResult = '\0';//用于存储中间结果
    string[] strChangeText = new string[p_Character.Length];
    for(int i = 0; i< p_Character.Length ; i++)
    {
    strChangeText[i] = p_Character.Substring(i,1); /*注意:对 “噢、杞、嘌、呤” 是个例外,此处特定将其转换。
    原因是该程序根据汉字在编码表中的位置来判断的,而部分的汉字所在的位置有误*/
    if(strChangeText[i] == "噢")
    {
    EndResult = EndResult + "A";
    continue;
    }
    else if(strChangeText[i] == "杞")
    {
    EndResult = EndResult + "Q";
    continue;
    }
    else if(strChangeText[i] == "嘌")
    {
    EndResult = EndResult + "P";
    continue;
    }
    else if(strChangeText[i] == "呤")
    {
    EndResult = EndResult + "L";
    continue;
    }

    //检测当前的字符"strChangeText[i]"是否为中文
    System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
    byte[] bytCheck = ascii.GetBytes(strChangeText[i]);
    if(bytCheck[0] != 63)//如果等于63即为中文(汉字、全脚符号)
    {
    EndResult = EndResult + strChangeText[i].ToString();
    continue;
    }
    //end byte[] bytChange = System.Text.Encoding.Default.GetBytes(strChangeText[i].ToCharArray());//转换为字节数组
     
    int intCompare;
    intCompare = bytChange[0] << 8; //将其高位左移8位
    intCompare = intCompare + bytChange[1]; //进行比较,得出其声母
    if(intCompare >= 0xB0A1 && intCompare < 0xB0C5)
    MiddleResult = 'A';
    else if(intCompare >= 0xB0C5 && intCompare < 0xB2C1)
    MiddleResult = 'B';
    else if(intCompare >= 0xB2C1 && intCompare < 0xB4EE)
    MiddleResult = 'C';
    else if(intCompare >= 0xB4EE && intCompare < 0xB6EA)
    MiddleResult = 'D';
    else if(intCompare >= 0xB6EA && intCompare < 0xB7A2)
    MiddleResult = 'E';
    else if(intCompare >= 0xB7A2 && intCompare < 0xB8C1)
    MiddleResult = 'F';
    else if(intCompare >= 0xB8C1 && intCompare < 0xB9FE)
    MiddleResult = 'G';
    else if(intCompare >= 0xB9FE && intCompare < 0xBBF7)
    MiddleResult = 'H';
    else if(intCompare >= 0xBBF7 && intCompare < 0xBFA6)
    MiddleResult = 'J';
    else if(intCompare >= 0xBFA6 && intCompare < 0xC0AC)
    MiddleResult = 'K';
    else if(intCompare >= 0xC0AC && intCompare < 0xC2E8)
    MiddleResult = 'L';
    else if(intCompare >= 0xC2E8 && intCompare < 0xC4C3)
    MiddleResult = 'M';
    else if(intCompare >= 0xC4C3 && intCompare < 0xC5B6)
    MiddleResult = 'N';
    else if(intCompare >= 0xC5B6 && intCompare < 0xC5BE)
    MiddleResult = 'O';
    else if(intCompare >= 0xC5BE && intCompare < 0xC6DA)
    MiddleResult = 'P';
    else if(intCompare >= 0xC6DA && intCompare < 0xC8BB)
    MiddleResult = 'Q';
    else if(intCompare >= 0xC8BB && intCompare < 0xC8F6)
    MiddleResult = 'R';
    else if(intCompare >= 0xC8F6 && intCompare < 0xCBFA)
    MiddleResult = 'S';
    else if(intCompare >= 0xCBFA && intCompare < 0xCDDA)
    MiddleResult = 'T';
    else if(intCompare >= 0xCDDA && intCompare < 0xCEF4)
    MiddleResult = 'W';
    else if(intCompare >= 0xCEF4 && intCompare < 0xD1B9)
    MiddleResult = 'X';
    else if(intCompare >= 0xD1B9 && intCompare < 0xD4D1)
    MiddleResult = 'Y';
    else if(intCompare >= 0xD4D1 && intCompare < 0xD7F9)
    MiddleResult = 'Z';
    else
    MiddleResult = '\0'; EndResult = EndResult + MiddleResult.ToString();//连接输出结果
    }
    return EndResult;
    }
    }
    }最后选择菜单"生成"下的"生成"就可以生成一个dll