<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在日常開發中我們經常會將JSON、XML、HTML、SQL、Regex等字串拷貝貼上到我們的程式碼中,而這些字串往往包含很多的引號",我們就必須將所有引號逐個新增跳脫符進行跳脫。這個跳脫十分麻煩,且容易出錯,而當我們們需要替換這些字串時,重新貼上進來的文字仍需要再次進行跳脫,簡直讓人崩潰。
在我的工作中經常會遇到這麼一個場景,對於某核心業務的方法,業務執行前一般會進行紀錄檔輸出引數物件(Json格式),這樣可在業務出現故障時追溯到當時的引數值,有利於事後補償或復現bug等。假設故障發生了,我從紀錄檔中獲取了這個引數值的內容如下
{ "kpzdbs": "YJ2", "jqbh": "499098528334", "fplxdm": "026", "fpqqlsh": "ZJBX965525", "kplx": 0, "tspz": "00" }
為復現該問題,在控制檯或單元測試中,將該引數定義,並呼叫MyLogic方法,
可以看到報錯的字串是我直接從紀錄檔中拷貝的json貼上進去的,需要對所有的"進行跳脫,這是很蛋疼的一個問題,有時候可能需要將很多紀錄檔中的物件貼上進來測試,每次貼上完還要進行插入跳脫符號
現在我們不需要這樣做了。
原始字串文字是字串文字的新格式。原始字串文字可以包含任意文字,包括空格、新行、嵌入引號和其他特殊字元,而無需跳脫序列。原始字串文字以至少三個雙引號開頭, (""") 個字元。它以相同數量的雙引號字元結尾。通常,原始字串文字在單個行上使用三個雙引號來啟動字串,另一行的三個雙引號結束字串。尾引號和尾引號前面的換行符不包括在最終內容中。
我使用這一新特性修改上面場景中的程式碼如下,可以看到,json字串不做任何跳脫直接貼上進來即可。
又比如我需要貼上一段html,如果沒有這新特性,跳脫那麼多引號,你可能會瘋吧!!
以至少三個雙引號 ("""...""") 開頭和結尾,任何數量小於開啟原始字串文字的數量的雙引號都被視為內容。
尾引號和尾引號前面的換行符不包括在最終內容中。
原始字串文字通常在單個行上使用三個雙引號來啟動字串,另一行的三個雙引號結束字串。
可以和$(可有多個)內插字串一起使用,字首$的數量是指示巢狀程式碼錶示式所需的花括號的數量。如果原始字串文字以$$為字首,則將單個大括號視為內容,並且需要兩個大括號來指示巢狀程式碼。就像使用引號一樣,您可以新增更多$以允許將更多大括號視為內容。
當字串的內容中包含至少三個"一起出現,你的連續出現"的個數加1(最少三個),就是原始字串要開頭和結尾使用"的個數,所以說不是固定三個"注意:圖中字串前面的|並不是輸入的字元,是編譯器的對齊提示。
輸出
如下如,編譯器自動以結尾""""前為界限顯示出一條豎線,豎線左側的空格不算作內容。
將結尾字元放到內容後面,編譯器會提示你將其放到自己的行上
這個可以理解為,在這種情況下可能會引起歧義,編譯器不確定你的原始字串是以下三種的哪一種。
如果下面這樣,則不會歧義,以箭頭指向的豎線為界,左側空格都不算做內容,右側空格均算作內容
如果是全在一行也行,因為不會產生歧義。
這個比較難理解點,$符號的數量也是不固定的,根據你需要連續將多少個花括號作為原始字元你想要輸出的內容沒有括號時,屬於常規用法,沒什麼好說的。
如果你想輸出下文
{張三}
會遇到這個問題的提示
簡單理解就是,你需要將一個大括號視作內容,就需要兩個$作為字首,你需要將n個括號是做內容,就需要n + 1個$做為字首,同樣內插字串也需要消耗跟$同樣數量的大括號。因為你要將一個大括號視為內容,所以需要1 + 1 = 2個$,同樣,內插變數也需要跟$數量一致的括號包裹,所以修改後的程式碼如下。
如果你想輸出的內容是
{{{{張三
需要將四個括號視為內容,n = 4,$數量為4 + 1 = 5,內插變數也需要5和括號包裹。
當我們將帶有引號的文字貼上至編譯器中需要進行大量的跳脫操作,原始字串特效能很好的解決這個問題,讓我們可以愉快進行貼上這些字串,但當與內插字串使用時,尤其是多個大括號場景還是比較難以理解的,好在編譯器會提示怎麼做,且那種場景都屬於極其不常見。
以上就是C#11新特性使用案例詳解內容,更多關於C#11新特性的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45