Java中如何處理帶雙引號的字串
阿新 • • 發佈:2018-11-17
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();";
編譯器沒有提示錯誤: