java实现javascript中的escape和unescape函数详解编程语言

/** 
 * java实现javascript中的escape和unescape函数 
 * 多用于URL编码与解码 
 */ 
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("编码:   " + escape(tmp)); 
		System.out.println("解码:   " + unescape(tmp)); 
	} 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10871.html

(0)
上一篇 2021年7月19日 10:31
下一篇 2021年7月19日 10:31

相关推荐

发表回复

登录后才能评论