java版的escape和unescape方法

其中unescape方法可以用来解开javascript的escape方法的处理结果,虽然不是什么好的解决方案,在是十万火急的情况下,可以参考参考。

 

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("testing escape : "+tmp); 
 tmp =escape(tmp);  System.out.println(tmp); 
 System.out.println("testing unescape :"+tmp); 
 System.out.println(unescape(tmp));
 }
 }
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值