java 转义 方法_JAVA 转义函数:跳过转义字符
从某位仁兄那得到,试验一效果不错,解决了我当前遇到的问题。
整理一番,代码如下:
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 转义函数:跳过转义字符相关推荐
- java mian 方法_Java mian函数
JAVA中的主函数是我们再熟悉不过的了,相信每个学习过JAVA语言的人都能够熟练地写出这个程序的入口函数,但对于主函数为什么这么写,其中的每个关键字分别是什么意思,可能就不是所有人都能轻松地答出来的了 ...
- java 获取方法_Java 反射理解(三)-- Java获取方法信息
Java 反射理解(三)-- Java获取方法信息 基本的数据类型.void关键字,都存在类类型. 举例如下: public class ClassDemo2 { public static void ...
- java笔记 方法_Java笔记-方法
Java笔记-方法 1.何谓方法 2.方法的定义和调用 package src.method; import java.util.Scanner; public class Demo02 { publ ...
- java clone方法_Java Calendar clone()方法与示例
java clone方法 日历类clone()方法 (Calendar Class clone() method) clone() method is available in java.util p ...
- java void方法_Java对象类的最终void wait(long ms)方法,包含示例
java void方法 对象类最终无效等待(长毫秒) (Object Class final void wait(long ms)) This method is available in java. ...
- java tostring方法_Java虚拟机如执行方法调用的(二)?
虚方法调用 Java里所有非私有实例方法调用都会被编译成invokevirtual指令. 接口方法调用都会被编译成invokeinterface指令.这两种指令都属于Java虚方法的调用. 在大多数情 ...
- java peek方法_Java ArrayDeque peek()方法与示例
java peek方法 ArrayDeque类peek()方法 (ArrayDeque Class peek() method) peek() Method is available in java. ...
- java double方法_Java Double类compare()方法与示例
java double方法 双类compare()方法 (Double class compare() method) compare() method is available in java.la ...
- java 析构方法_java析构方法详解
之前给大家介绍了一下java构造方法,那么下面要给大家讲到的就是java析构方法,下面一起通过文章来了解一下吧. 析构方法和构造方法不同,真好是相反的,在对象脱离其作用域的时候,系统自动执行析构方法. ...
最新文章
- linux 有空格的文件夹,Linux之删除带有空格的文件
- Qt for ios 打开图片和 office文件
- @ExceptionHandler
- redis(18)--发布和订阅
- stringcstdlibctimecstdargctimectypecmathclimits
- 十二个生活习惯,增加你的心灵压力
- java enummap_Java EnumMap get()方法与示例
- eclipse下生成Java类图和时序图,生成UML图
- 在 Windows Azure 虚拟机上运行 SQL Server 工作负荷的十大注意事项
- 电脑wifi距离测试软件,wifi测速工具
- IDEA安装翻译插件
- 2016年linux认证考试,2016年Linux认证考试复习要点辅导
- ping——判断两个设备是否在同一个局域网下
- chatgpt 镜像版
- pd.read_excel出现xlrd.biffh.XLRDError: Excel xlsx file; not supported解决方案
- 左式堆(左高树)实现
- python分享会总结
- 定义Student类
- 有限元非线性问题概述-几何非线性
- 西门子博途梯形图写的Modbus RTU 程序
热门文章
- 【已解决】Exception in thread “main“ java.lang.IllegalArgumentExcept: illegal initialSize 6, maxActive 5
- 使用nettyio+socket.io搭建简单的网页聊天室
- python 烟花效果_新年快乐! python实现绚烂的烟花绽放效果
- linux查看历史的所有命令,linux快速查找历史命令
- python抓取文本字段_使用Python提取文本中含有特定字符串的方法示例
- 2018-2022年互联网人才发展报告
- 1.JAVA中super关键字的使用
- 小米枪战不显示服务器,小米枪战怎么进不去 小米枪战进不去解决方法
- 《微信小程序》微信小程序开发实例
- 裁员、山寨、氪金,游戏行业的破局之道在哪?