簡體   English   中英

String.Format轉義VB與C#

[英]String.Format escaping VB vs C#

在搜索如何在String.Format中轉義單引號時,我在SO上找到了答案:在String.Format()中轉義單引號。

但是對於VB來說似乎有所不同。 我測試了,確實C#需要

string s = DateTime.Now.ToString("MMM d \\'yy 'at' H:mmm");

而VB需要

Dim s As String = Now.ToString("MMM d \'yy 'at' H:mmm")

為什么C#需要雙反斜杠,而VB需要單反斜杠? 對於C#用戶來說,這可能是一個愚蠢的問題,但是盡管我可以閱讀C#,但我並不習慣編寫它。

在C#中,字符串文字可以包含轉義序列,例如\\ n表示換行或\\ t表示制表符或\\“表示引號。如果不需要轉義,則可以在文字前加上@前綴(例如: @"MMM ..." )並獲得相同的字符串VB。

在VB中,絕對不允許轉義,因此無需轉義反斜杠。

原因是C#通過\\字符支持字符串文字中的轉義序列。 VB沒有這種轉義機制,因此單個\\被解釋為\\

在C#中,您可以使用逐字字符串獲得相同的行為

@"MMM d \'yy 'at' H:mmm"

在C#中,反斜杠具有含義(\\ n是換行符\\ t tab ....)。 所以backlslahs本身就是一個轉義字符-您必須轉義:)或在字符串前面放置一個AT標記-這樣就制成了“非轉義字符串”(通常用於路徑)

在c#中將轉義。 您的文本將變成“ MMM d \\'yy'at'H:mmm”。 您無需在字符串中轉義'字符。 另一方面,如果要在字符串中使用“”,則需要對其進行轉義,以不使字符串“ MMM d \\” yy \\“ at \\” H:mmm“結尾。 或者,您也可以使用@“”字符串方法,該方法將自動為您轉義字符(不是“盡管”)。因此,您可以編寫@“這將不會\\ n為兩行”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM