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

          最近正做一個(gè)根據(jù)漢字拼音縮寫(xiě)的查詢,從網(wǎng)上搜了搜,覺(jué)得這種實(shí)現(xiàn)是最好的,但不知道原理是啥。
          public class ChnToPinYin{
          /**
               * 漢字轉(zhuǎn)拼音縮寫(xiě)
               * @param str  //要轉(zhuǎn)換的漢字字符串
               * @return String  //拼音縮寫(xiě)
               */
              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) {//字母和符號(hào)原樣保留
                                      tempStr += String.valueOf(c);
                              }
                              else {//累加拼音聲母
                                      tempStr += getPYChar( String.valueOf(c) );
                              }
                      }
                      return tempStr;
              }
              /**
               * 取單個(gè)字符的拼音聲母
               * @param c  //要轉(zhuǎn)換的單個(gè)漢字
               * @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("中國(guó),,;$#@&avc"));
              }

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 益阳市| 理塘县| 静海县| 三亚市| 凤翔县| 韶山市| 安龙县| 仙居县| 百色市| 景泰县| 辉南县| 青冈县| 仙游县| 巴林左旗| 砀山县| 繁峙县| 丰原市| 大足县| 封丘县| 江西省| 永年县| 邻水| 木里| 永济市| 清镇市| 五河县| 和田县| 胶南市| 姚安县| 沂源县| 云浮市| 廊坊市| 西乌珠穆沁旗| 凤凰县| 本溪| 丰台区| 和林格尔县| 惠来县| 贵定县| 六枝特区| 巴塘县|