Java中char是用' '单引号,字符串用" "包起来即可。但是今天恰逢遇到要用Java执行js代码,因为两种编程语言间格式的差异,让我不得不处理字符串中带双引号的问题。Python中有''' '''三引号,实现多行注释,迫切希望Java中有一天能更新上此特性。话不多说,看看代码吧。
处理前:
运行报错:
Multiple markers at this line
- Invalid character constant
- Syntax error on tokens, ( expected instead
- Syntax error, insert ";" to complete Statement
- Syntax error on tokens, ( expected instead
- Syntax error on token "");aaa=aaa.replace("", invalid
AssignmentOperator
查了下,字符串中的双引号需要加" \ "进行转义。
加转义 \ 处理后:
public String challenge(String resp){
resp = resp.substring(8);
String tmp[] = resp.split("</script");
resp = tmp[0];
resp = resp.replace("eval(y.replace", "var aaa=(y.replace");
resp = resp + "aaa=aaa.replace(\"h=document.createElement('div');\",\"\");aaa=aaa.replace(\"h.innerHTML='<a href=\\\'/\\\'\",\"\");\n" +
"aaa=aaa.replace(\">x</a>';\",'');aaa=aaa.replace(\"h=h.firstChild.href;\",\"h='http://www.gsxt.gov.cn/';\");aaa=aaa.replace(\"while(window._phantom||window.__phantomas){};\",\"\");bbb=aaa.split(\"setTimeout\");\n" +
" aaa=bbb[0]+\"return dc;}}\";\n" +
" aaa=aaa.replace(\"var l=\",\"{fa:\");\n" +
" var ffa=eval(\"(\"+aaa+\")\");\n" +
" var fffa=ffa.fa();";
编译器没有提示错误: