JAVA 转义函数:跳过转义字符
2014-04-04 13:26
260 查看
从某位仁兄那得到,试验一效果不错,解决了我当前遇到的问题。
整理一番,代码如下:
结果如下:
转载至http://www.blogjava.net/emu/articles/4773.html
整理一番,代码如下:
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 ~!@#$%^&*()_+|\=-,./?><;'][{}"
转载至http://www.blogjava.net/emu/articles/4773.html
相关文章推荐
- java中PreparedStatement解决需转义字符向数据库中插入时的转义问题
- 反斜杠加3个数字是什么编码?JAVA转义序列、转义字符汇总。
- 转义字符\(在hive+shell以及java中注意事项):正则表达式的转义字符为双斜线,split函数解析也是正则
- 转义字符\(在hive+shell以及java中注意事项):正则表达式的转义字符为双斜线,split函数解析也是正则
- 反斜杠加3个数字是什么编码, JAVA转义序列, 转义字符汇总
- java中转义字符(回车\r\n)的替换 反转义
- java中split()函数,"."应该为''\\.",注意转义字符! 程序对分割后的文件碎片进行合并。
- java学习小记 输入输出 字符串 函数 高精度 进制转换
- Java:函数,类,数组之间的运用
- java实现C语言编译器:实现有参数的函数调用
- java-静态同步函数的锁是Class对象
- 关于javascript基于DWR调用java函数的传值问题
- C#、C++、JAVA中虚函数和抽象函数的概念对比
- java中equals()函数与==的区别
- java转义xml中的多余尖括号
- java线程常用函数
- JAVA——多线程编程之同步:同步代码块与同步函数(二)
- Java中的函数传递
- 正则表达式中需要转义的特殊字符小结-java
- 黑马程序员_Java基础[27]_静态同步函数