iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
1
Modern Web

C#與ASP.Net入門-我要成為工程師!!系列 第 7

Day07-C#字串與跳脫字元(Escape Character/逸出字元)

  • 分享至 

  • xImage
  •  

知道字串是什麼之後,你可能實際使用上會碰到以下幾種狀況

為什麼我想要把檔案路徑放進字串裡卻一直報錯??像這樣
https://ithelp.ithome.com.tw/upload/images/20190905/20120055F6lTT1CHtl.png

或者是

好像遇到某幾個英文字我就無法呈現我想要的結果,會亂跑耶!
https://ithelp.ithome.com.tw/upload/images/20190905/20120055FHiG8MhVjs.png

鏘鏘!因為你,遇到Escape Character啦!!!!!

什麼是跳脫字元(Escape Character/逸出字元)?

跳脫字元是字元的一種特殊情況,也標示著跳脫序列開始的那個字元。編寫程式語言時,可能因為技術等種種原因,無法直接在程式碼中寫出所要的字元,這時候就需要跳脫字元協助!

跳脫序列有兩種功能,一種是表示裝置命令或者無法被字母表直接表示的特殊資料。另一種,用於表示無法在目前上下文中被鍵盤表示的字元(如字串中的Enter符號、想要表達換行時...等)。

每種語言的跳脫字元不同,URL以「%」作為特殊字元,C、C++、JAVA、C#以反斜線「\」作為跳脫字元,在字串裡具有特殊意義。常見的跳脫字元(逸出字元)如下:
https://ithelp.ithome.com.tw/upload/images/20190906/20120055FeclsRJWK4.png

說多不多,說少不少,總之就是告訴你,遇到\的時候就要有警覺了!,可能會出現不在預期內的狀況!

所以遇到跳脫字元(Escape Character/逸出字元)怎麼辦?

以下有兩種方法可以使用

  • 再給他一個 \ :
    以上面遇到的第一個問題為例,改成下方這樣就OK了!
string ai = "C:\Users\user\Desktop\鐵人賽";//會報錯
string ai = "C:\\Users\\user\\Desktop\\鐵人賽";//OK了!

用這個方法就是跟電腦說,欸!我\後面就是我要表達的,你不要誤會喔!
但是萬一內容一多,就會\滿天飛了!於是C#有一個更簡潔的寫法!

  • 善用@符號:
    在字串一開頭(雙引號""外),加上一個@,來代表後面這個字串的\都不是跳脫字元。
    一樣以第一個例子為例:
string ai = "C:\Users\user\Desktop\鐵人賽";//會報錯
string ai = @"C:\Users\user\Desktop\鐵人賽";//加個@輕輕鬆鬆

現在我遇到路徑、讀寫外部字串資料、讀寫html的tag都會習慣先判斷要不要加上@,避免錯誤哈哈

另外補充一個小知識,跳脫字元的字元長度怎麼計算呢?

以最常見的\r\n為例。實際輸出它的長度會發現:
https://ithelp.ithome.com.tw/upload/images/20190906/20120055mFWxamjSQF.png

不是4!!!是2!!!! \ 是不納入計算的喔~

以上跟大家分享~那下一章我們就要進入C#的運算囉!

參考資料

wikipedia-跳脫字元
MSDN-在規則運算式中執行字元逸出


上一篇
Day06-C#變數與變數宣告、常數與常數宣告、var、型別轉換
下一篇
Day08-C#運算式與運算子(+、-、*、/、>、<....等)-來用C#算數學吧!(上)
系列文
C#與ASP.Net入門-我要成為工程師!!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言