1. 程式人生 > >Java中如何處理帶雙引號的字串

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

編譯器沒有提示錯誤: