数据库中存在字典行数据,在窗体上输入部分拼音就能出现字典中包括这些拼音的汉字,例如 字典中有“河西区大沽南路”“河东区区政府”,在输入“hd”时就会出现“河东区区政府”,用代码如何实现?  

解决方案 »

  1.   

    /// <summary>
            /// 返回汉字字符串的拼音的首字母
            /// </summary>
            /// <param name="chinesestr">要转换的字符串</param>
            /// <returns></returns>
            public static string Chinesecap(string chinesestr)
            {
                byte[] zw = new byte[2];
                long chinesestr_int;
                string charstr, chinastr = null, capstr = null;
                for (int i = 0; i <= chinesestr.Length - 1; i++)
                {
                    charstr = chinesestr.Substring(i, 1).ToString();
                    if (charstr == " ")
                    {
                        continue;
                    }
                    zw = System.Text.Encoding.Default.GetBytes(charstr);
                    // 得到汉字符的字节数组 
                    if (zw.Length == 2)
                    {
                        int i1 = (short)(zw[0]);
                        int i2 = (short)(zw[1]);
                        chinesestr_int = i1 * 256 + i2;
                        //table of the constant list 
                        // a; //45217..45252 
                        // b; //45253..45760 
                        // c; //45761..46317 
                        // d; //46318..46825 
                        // e; //46826..47009 
                        // f; //47010..47296 
                        // g; //47297..47613                     // h; //47614..48118 
                        // j; //48119..49061 
                        // k; //49062..49323 
                        // l; //49324..49895 
                        // m; //49896..50370 
                        // n; //50371..50613 
                        // o; //50614..50621 
                        // p; //50622..50905 
                        // q; //50906..51386                     // r; //51387..51445 
                        // s; //51446..52217 
                        // t; //52218..52697 
                        //没有u,v 
                        // w; //52698..52979 
                        // x; //52980..53640 
                        // y; //53689..54480 
                        // z; //54481..55289                     if ((chinesestr_int >= 45217) && (chinesestr_int <= 45252))
                        {
                            chinastr = "a";
                        }
                        else if ((chinesestr_int >= 45253) && (chinesestr_int <= 45760))
                        {
                            chinastr = "b";
                        }
                        else if ((chinesestr_int >= 45761) && (chinesestr_int <= 46317))
                        {
                            chinastr = "c";
                        }
                        else if ((chinesestr_int >= 46318) && (chinesestr_int <= 46825))
                        {
                            chinastr = "d";
                        }
                        else if ((chinesestr_int >= 46826) && (chinesestr_int <= 47009))
                        {
                            chinastr = "e";
                        }
                        else if ((chinesestr_int >= 47010) && (chinesestr_int <= 47296))
                        {
                            chinastr = "f";
                        }
                        else if ((chinesestr_int >= 47297) && (chinesestr_int <= 47613))
                        {
                            chinastr = "g";
                        }
                        else if ((chinesestr_int >= 47614) && (chinesestr_int <= 48118))
                        {
                            chinastr = "h";
                        }
                        else if ((chinesestr_int >= 48119) && (chinesestr_int <= 49061))
                        {
                            chinastr = "j";
                        }
                        else if ((chinesestr_int >= 49062) && (chinesestr_int <= 49323))
                        {
                            chinastr = "k";
                        }
                        else if ((chinesestr_int >= 49324) && (chinesestr_int <= 49895))
                        {
                            chinastr = "l";
                        }
                        else if ((chinesestr_int >= 49896) && (chinesestr_int <= 50370))
                        {
                            chinastr = "m";
                        }
                        else if ((chinesestr_int >= 50371) && (chinesestr_int <= 50613))
                        {
                            chinastr = "n";
                        }
                        else if ((chinesestr_int >= 50614) && (chinesestr_int <= 50621))
                        {
                            chinastr = "o";
                        }
                        else if ((chinesestr_int >= 50622) && (chinesestr_int <= 50905))
                        {
                            chinastr = "p";
                        }
                        else if ((chinesestr_int >= 50906) && (chinesestr_int <= 51386))
                        {
                            chinastr = "q";
                        }
                        else if ((chinesestr_int >= 51387) && (chinesestr_int <= 51445))
                        {
                            chinastr = "r";
                        }
                        else if ((chinesestr_int >= 51446) && (chinesestr_int <= 52217))
                        {
                            chinastr = "s";
                        }
                        else if ((chinesestr_int >= 52218) && (chinesestr_int <= 52697))
                        {
                            chinastr = "t";
                        }
                        else if ((chinesestr_int >= 52698) && (chinesestr_int <= 52979))
                        {
                            chinastr = "w";
                        }
                        else if ((chinesestr_int >= 52980) && (chinesestr_int <= 53640))
                        {
                            chinastr = "x";
                        }
                        else if ((chinesestr_int >= 53689) && (chinesestr_int <= 54480))
                        {
                            chinastr = "y";
                        }
                        else if ((chinesestr_int >= 54481) && (chinesestr_int <= 55289))
                        {
                            chinastr = "z";
                        }
                    }
                    else
                    {
                        capstr = chinesestr;
                        break;
                    }                capstr = capstr + chinastr;
                }
                return capstr;
            }