从某位仁兄那得到,试验一效果不错,解决了我当前遇到的问题。

整理一番,代码如下:

package escape;

//java版本的escape和unescape函数

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

}

}

结果如下:testing escape : ~!@#$%^&*()_+|\=-,./?>

%7e%21%40%23%24%25%5e%26%2a%28%29%5f%2b%7c%5c%3d%2d%2c%2e%2f%3f%3e%3c%3b%27%5d%5b%7b%7d%22

testing unescape :%7e%21%40%23%24%25%5e%26%2a%28%29%5f%2b%7c%5c%3d%2d%2c%2e%2f%3f%3e%3c%3b%27%5d%5b%7b%7d%22

~!@#$%^&*()_+|\=-,./?>

java 转义 方法_JAVA 转义函数:跳过转义字符相关推荐

  1. java mian 方法_Java mian函数

    JAVA中的主函数是我们再熟悉不过的了,相信每个学习过JAVA语言的人都能够熟练地写出这个程序的入口函数,但对于主函数为什么这么写,其中的每个关键字分别是什么意思,可能就不是所有人都能轻松地答出来的了 ...

  2. java 获取方法_Java 反射理解(三)-- Java获取方法信息

    Java 反射理解(三)-- Java获取方法信息 基本的数据类型.void关键字,都存在类类型. 举例如下: public class ClassDemo2 { public static void ...

  3. java笔记 方法_Java笔记-方法

    Java笔记-方法 1.何谓方法 2.方法的定义和调用 package src.method; import java.util.Scanner; public class Demo02 { publ ...

  4. java clone方法_Java Calendar clone()方法与示例

    java clone方法 日历类clone()方法 (Calendar Class clone() method) clone() method is available in java.util p ...

  5. java void方法_Java对象类的最终void wait(long ms)方法,包含示例

    java void方法 对象类最终无效等待(长毫秒) (Object Class final void wait(long ms)) This method is available in java. ...

  6. java tostring方法_Java虚拟机如执行方法调用的(二)?

    虚方法调用 Java里所有非私有实例方法调用都会被编译成invokevirtual指令. 接口方法调用都会被编译成invokeinterface指令.这两种指令都属于Java虚方法的调用. 在大多数情 ...

  7. java peek方法_Java ArrayDeque peek()方法与示例

    java peek方法 ArrayDeque类peek()方法 (ArrayDeque Class peek() method) peek() Method is available in java. ...

  8. java double方法_Java Double类compare()方法与示例

    java double方法 双类compare()方法 (Double class compare() method) compare() method is available in java.la ...

  9. java 析构方法_java析构方法详解

    之前给大家介绍了一下java构造方法,那么下面要给大家讲到的就是java析构方法,下面一起通过文章来了解一下吧. 析构方法和构造方法不同,真好是相反的,在对象脱离其作用域的时候,系统自动执行析构方法. ...

最新文章

  1. linux 有空格的文件夹,Linux之删除带有空格的文件
  2. Qt for ios 打开图片和 office文件
  3. @ExceptionHandler
  4. redis(18)--发布和订阅
  5. stringcstdlibctimecstdargctimectypecmathclimits
  6. 十二个生活习惯,增加你的心灵压力
  7. java enummap_Java EnumMap get()方法与示例
  8. eclipse下生成Java类图和时序图,生成UML图
  9. 在 Windows Azure 虚拟机上运行 SQL Server 工作负荷的十大注意事项
  10. 电脑wifi距离测试软件,wifi测速工具
  11. IDEA安装翻译插件
  12. 2016年linux认证考试,2016年Linux认证考试复习要点辅导
  13. ping——判断两个设备是否在同一个局域网下
  14. chatgpt 镜像版
  15. pd.read_excel出现xlrd.biffh.XLRDError: Excel xlsx file; not supported解决方案
  16. 左式堆(左高树)实现
  17. python分享会总结
  18. 定义Student类
  19. 有限元非线性问题概述-几何非线性
  20. 西门子博途梯形图写的Modbus RTU 程序

热门文章

  1. 【已解决】Exception in thread “main“ java.lang.IllegalArgumentExcept: illegal initialSize 6, maxActive 5
  2. 使用nettyio+socket.io搭建简单的网页聊天室
  3. python 烟花效果_新年快乐! python实现绚烂的烟花绽放效果
  4. linux查看历史的所有命令,linux快速查找历史命令
  5. python抓取文本字段_使用Python提取文本中含有特定字符串的方法示例
  6. 2018-2022年互联网人才发展报告
  7. 1.JAVA中super关键字的使用
  8. 小米枪战不显示服务器,小米枪战怎么进不去 小米枪战进不去解决方法
  9. 《微信小程序》微信小程序开发实例
  10. 裁员、山寨、氪金,游戏行业的破局之道在哪?