posts - 55,comments - 89,trackbacks - 0
          參考:http://www.360doc.com/content/081106/15/61497_1888633.html

          最近正做一個根據(jù)漢字拼音縮寫的查詢,從網(wǎng)上搜了搜,覺得這種實現(xiàn)是最好的,但不知道原理是啥。
          public class ChnToPinYin{
          /**
               * 漢字轉(zhuǎn)拼音縮寫
               * @param str  //要轉(zhuǎn)換的漢字字符串
               * @return String  //拼音縮寫
               */
              public static String getPYString(String str)
              {
                      String tempStr = "";
                      for(int i=0; i<str.length(); i++) {
                              char c = str.charAt(i);
                              if((int)c >= 33 && (int)c <=126) {//字母和符號原樣保留
                                      tempStr += String.valueOf(c);
                              }
                              else {//累加拼音聲母
                                      tempStr += getPYChar( String.valueOf(c) );
                              }
                      }
                      return tempStr;
              }
              /**
               * 取單個字符的拼音聲母
               * @param c  //要轉(zhuǎn)換的單個漢字
               * @return String 拼音聲母
               */
              public static String getPYChar(String c)
              {
                      byte[] array = new byte[2];
                      array = String.valueOf(c).getBytes();
                      int i = (short)(array[0] - '\0' + 256) * 256 + ((short)(array[1] - '\0' + 256));
                      if ( i < 0xB0A1) return "*";
                      if ( i < 0xB0C5) return "a";
                      if ( i < 0xB2C1) return "b";
                      if ( i < 0xB4EE) return "c";
                      if ( i < 0xB6EA) return "d";
                      if ( i < 0xB7A2) return "e";
                      if ( i < 0xB8C1) return "f";
                      if ( i < 0xB9FE) return "g";
                      if ( i < 0xBBF7) return "h";
                      if ( i < 0xBFA6) return "j";
                      if ( i < 0xC0AC) return "k";
                      if ( i < 0xC2E8) return "l";
                      if ( i < 0xC4C3) return "m";
                      if ( i < 0xC5B6) return "n";
                      if ( i < 0xC5BE) return "o";
                      if ( i < 0xC6DA) return "p";
                      if ( i < 0xC8BB) return "q";
                      if ( i < 0xC8F6) return "r";
                      if ( i < 0xCBFA) return "s";
                      if ( i < 0xCDDA) return "t";
                      if ( i < 0xCEF4) return "w";
                      if ( i < 0xD1B9) return "x";
                      if ( i < 0xD4D1) return "y";
                      if ( i < 0xD7FA) return "z";
                      return "*";
              }
              
              public static void main(String []g){
               System.out.println(getPYString("中國,,;$#@&avc"));
              }

          }
          posted on 2009-06-08 14:28 jiafang83 閱讀(2196) 評論(3)  編輯  收藏

          FeedBack:
          # re: JAVA版漢字轉(zhuǎn)拼音縮寫程序
          2009-07-18 14:49 | 小葉子
          沒有發(fā)現(xiàn)這段程序有問題嗎?你輸個“深圳”,試試,看能不能輸出“sz”,若不能,我想問你這個問題該如何解決?  回復  更多評論
            
          # re: JAVA版漢字轉(zhuǎn)拼音縮寫程序
          2013-12-25 18:26 | dsa
          有問題啊,是錯的!  回復  更多評論
            
          # re: JAVA版漢字轉(zhuǎn)拼音縮寫程序
          2015-04-14 19:06 | niko
          java必須是GBK編碼才行  回復  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 宜都市| 蓝山县| 淳化县| 绵阳市| 综艺| 泰兴市| 宜春市| 辉县市| 景洪市| 枝江市| 安阳县| 库伦旗| 察哈| 安化县| 巨野县| 黄山市| 延庆县| 广汉市| 九台市| 香港| 汾阳市| 锡林浩特市| 昌邑市| 抚松县| 肇源县| 赤水市| 正镶白旗| 元江| 潼南县| 廊坊市| 舞钢市| 望城县| 墨竹工卡县| 乐陵市| 遂平县| 曲松县| 浦江县| 耒阳市| 盱眙县| 舒兰市| 白水县|