现在的位置: 首页 > 综合 > 正文

java版本的escape和 unescape[对应javaScript里的函数]

2013年09月17日 ⁄ 综合 ⁄ 共 1728字 ⁄ 字号 评论关闭

/**
* java版本的escape和 unescape[对应javaScript里的函数]
*/

public class EscapeTool {

    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();
    }
}

抱歉!评论已关闭.