java中的轉義字元,html中的轉義字元
形象理解
在java中轉義字元都有一定的含義,編譯程式的時候會展現出來(就像人的名片一樣,一個轉義字元都有一個實際的含義)!
" "在java中代表裡面包含了一個字串編譯後只剩下字串,\"則會被編譯成 "保留下來
參考資料
概念:通過 \ 來轉變後面字母或符號的含義。
舉一些例子:
\b:退格
\n:換行
\t:製表符,相當於tab鍵
\r:回車
\\:表示反斜槓
\':表示單引號
\":表示雙引號
轉義字元的作用有兩個 :第一個是像“<”和“>”這類符號已經用來表示HTML標籤,因此就不能直接當做文字中的符號來使用。為了在HTML文件中使用這些符號,就需要定義它的
比如在寫html的時候,如果想讓兩個字元之間多幾個空格,你拍幾個空格,發現瀏覽器檢視只有一個,但你要寫幾個\b 就沒問題了
這幾天一直在畫頁面,身為開發人員的我之所以要畫頁面是因為當前專案中的頁面上所有的東西都是從資料庫中取得的,也就是動態的,類似於我們設計自己的個人QQ空間,但因為是大型平臺,有自定義業務的概念 ,所有更為複雜,在這就不多說了,我所謂的畫頁面就是如何把資料結合邏輯,變成HTML,其中遇到的最大的問題就是我今天要說的;
一個頁面上有一個查詢,當然查詢的條件,欄位型別都是動態的,要根據資料型別生成不同的文字框,如果是varchar2就生成不同的, 如果是date就生成加入時間選擇js的,頁面上有一個新增新的條件組的按鈕,連結到一個js事件,裡面就要做關於文字框的判斷,我們只看判斷部分 如下;
if(tlist[index].value=="date") { table.rows[t].cells[2].innerHTML='<input name="'+mlist[index].value+biduinum+'" type="text" size="12" style="width: 200px" readonly="readonly" onclick="WdatePicker({dateFmt:"yyyy-MM-dd"})" onfocus="WdatePicker({dateFmt:"yyyy-MM-dd"})" class="Wdate" />'; } else { table.rows[t].cells[2].innerHTML='<input name="'+mlist[index].value+biduinum+'" type="text" size="12" style="width: 200px" />'; }
重點為紅色部分, 這樣寫我本來認為是無可厚非的, 但是如果這段程式碼執行一次,就彙報js錯誤,錯誤資訊是“語法錯誤”,js本身為弱語言,單引號和雙引號如果是但用的話其實可以混淆的,但如果一起用就要區分,例如上段程式碼我可以把單引號和雙引號對換,也是可以的, 但如果只改變其中一處就需要用+號連結, 意義也不同了,例如
"'b'" 可以 ,但""b""就會出錯,需要""+"b"+""
無法通過單引號雙引號的改變來解決問題,我就開始尋求別的思路,我嘗試了使用 \ (轉義符)來解決,如下
onclick="WdatePicker({dateFmt:\"yyyy-MM-dd\"})"
但還是不行,個人認為原因是js還是在html的作用中,而不是java,所以我想到了使用"來解決,
table.rows[t].cells[2].innerHTML='<input name="'+mlist[index].value+biduinum+'" type="text" size="12" style="width: 200px" readonly="readonly" onclick="WdatePicker({dateFmt:"yyyy-MM-dd"})" onfocus="WdatePicker({dateFmt:"yyyy-MM-dd"})" class="Wdate" />';
問題解決了, 我生平第一次感覺到了這個東西的神奇, 原來只使用過 ,看來在程式的世界中,每一樣東西都有他存在的意義, 即使在我們不得已淘汰他們的時候 ,也要知道他們有意義的部分,因為這些富有意義的東西可能在某時某刻給我們極大地幫助,而且替代他們的產品未必可以將他們的優點全部傳承,人亦如此 。