☆藍色夢想☆

          世界總是反反覆覆錯錯落落地飄去 來不及嘆息 生活不是平平淡淡從從容容的東西 不能放棄
          posts - 57, comments - 5, trackbacks - 0, articles - 0

          java版本的escape和unescape函數

          Posted on 2005-12-22 13:40 ☆藍色夢想☆ 閱讀(630) 評論(0)  編輯  收藏 所屬分類: AJAX

          class  EscapeUnescape
          {
           public static String  escape (String src)
           {
            int i;
            char j;
            StringBuffer tmp = new StringBuffer();
            tmp.ensureCapacity(src.length()*6);

            for (i=0;i<src.length() ;i++ )
            {

             j = src.charAt(i);

             if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j))
              tmp.append(j);
             else
              if (j<256)
              {
              tmp.append( "%" );
              if (j<16)
               tmp.append( "0" );
              tmp.append( Integer.toString(j,16) );
              }
              else
              {
              tmp.append( "%u" );
              tmp.append( Integer.toString(j,16) );
              }
            }
            return tmp.toString();
           }

           public static String  unescape (String src)
           {
            StringBuffer tmp = new StringBuffer();
            tmp.ensureCapacity(src.length());
            int  lastPos=0,pos=0;
            char ch;
            while (lastPos<src.length())
            {
             pos = src.indexOf("%",lastPos);
             if (pos == lastPos)
              {
              if (src.charAt(pos+1)=='u')
               {
               ch = (char)Integer.parseInt(src.substring(pos+2,pos+6),16);
               tmp.append(ch);
               lastPos = pos+6;
               }
              else
               {
               ch = (char)Integer.parseInt(src.substring(pos+1,pos+3),16);
               tmp.append(ch);
               lastPos = pos+3;
               }
              }
             else
              {
              if (pos == -1)
               {
               tmp.append(src.substring(lastPos));
               lastPos=src.length();
               }
              else
               {
               tmp.append(src.substring(lastPos,pos));
               lastPos=pos;
               }
              }
            }
            return tmp.toString();
           }

           public static void main(String[] args)
           {
            String tmp="~!@#$%^&*()_+|\\=-,./?><;'][{}\"";
            System.out.println("testing escape : "+tmp);
            tmp =escape(tmp);
            System.out.println(tmp);
            System.out.println("testing unescape :"+tmp);
            System.out.println(unescape(tmp));
           }
          }

          主站蜘蛛池模板: 定襄县| 合江县| 朝阳市| 肥西县| 凉城县| 洛浦县| 尖扎县| 维西| 抚宁县| 鄂州市| 南雄市| 巧家县| 营山县| 瑞金市| 濉溪县| 手游| 泊头市| 革吉县| 泰顺县| 疏附县| 从江县| 黑河市| 眉山市| 榆社县| 兴业县| 林西县| 华宁县| 清苑县| 东乡县| 两当县| 全椒县| 津市市| 太白县| 米林县| 吉木萨尔县| 泰兴市| 五河县| 锦州市| 高清| 台北县| 潞西市|