网上找了找,只有汉字转拼音首字母的程序,却没有拼音首字母转汉字的程序.
是不是没办法实现?

解决方案 »

  1.   


      /// <summary> 
        /// 把汉字转换成拼音第一个字母 
        /// </summary> 
        /// <param name="ChineseStr">中文字符串 </param> 
        /// <returns>返回首拼音字母 </returns> 
        public static string ChineseCap(string ChineseStr) 
        { 
            string Capstr = ""; 
            byte[] ZW = new byte[2]; 
            long ChineseStr_int; 
            string CharStr, ChinaStr = ""; 
            for (int i = 0; i <= ChineseStr.Length - 1; i++) 
            { 
                CharStr = ChineseStr.Substring(i, 1).ToString(); 
                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;                 #region 参数 
                    //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                 #endregion                 #region 判断 
                    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"; 
                    }                 #endregion             } 
                else 
                { 
                    Capstr = ChineseStr; 
                    break; 
                }             Capstr = Capstr + ChinaStr; 
            } 
            return Capstr;     } http://topic.csdn.net/u/20090625/17/33994538-ceea-4db4-93e9-06ac1aa4f8d5.html
      

  2.   

    不是做输入法。
    原意是想,用户在文本框中输入"BJ",页面列出数据库中首字母为"BJ"的所有城市,例如"北京"等等。
      

  3.   

    http://blog.csdn.net/bohut/archive/2004/10/29/157911.aspx
    delphi的代码,那个API应该是win32的,没怎么看懂
      

  4.   

    http://bbs.pep.com.cn/thread-389635-1-8.html
    这个也可以参考下,vb的
      

  5.   

    实现你的功能是可以的!
    我认为最好的方法是在你的城市例表上加一个存储拼音的例(当然如果要支持五笔就加个五笔例)
    后在向数据库存储数据是就根据一个函数把简码存入哪个例(当然由于多营字的问题和每个地区读字的习惯建议做一个教正窗口),在需要读数时就使用sql的例模糊查找功能
    例: select 城市名 from 表名  where 拼音例 like '%你数据的简码%'
    这个语句是oracle的格式支持模糊查找!
      

  6.   

    google的联想搜索是不是有这个功能,百度的貌似也有
      

  7.   

    这个功能之前见到过,当时想应该是另外加了一列来存储城市简称。在进行查询的时候可以进行模糊匹配。
    楼上其它人提到的字典实际上也是这个原理。你可以看下luncene.也可以用luncene.net建索引。