java實現javascript中的escape和unescape函數

fp34 9年前發布 | 3K 次閱讀 Java

/**

  • java實現javascript中的escape和unescape函數
  • 多用于URL編碼與解碼 */ public 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("編碼:   " + escape(tmp));
     System.out.println("解碼:   " + unescape(tmp));
    

    } }</pre>

 本文由用戶 fp34 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!