icsnowing 发表于 2013-2-7 15:03:51

java版本的escape和unescape函数

转载自http://www.blogjava.net/emu/articles/4773.html
classEscapeUnescape
{
public static Stringescape (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 Stringunescape (String src)
{
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
intlastPos=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));
}
}
页: [1]
查看完整版本: java版本的escape和unescape函数