java,php,asp.net,linux,javascript,mysql,mssql,oracle,编程

java版本的escape和 unescape

转载请注明:http://www.pmjava.com/Article/ShowInfo.asp?ID=56620
/**
* 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();
    }
}

posted on 2009-06-10 21:47 rrong_m 阅读(108) 评论(0)  编辑  收藏

<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

随笔档案

文章分类

文章档案

java编程

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜