Java中如何处理带双引号的字符串

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

编译器没有提示错误:

猜你喜欢

转载自blog.csdn.net/weixin_39128119/article/details/82762348