template - string c#




如何在C#6中通過字符串插值使用轉義符? (4)

我一直在使用字符串插值並喜歡它,但是遇到一個問題,我試圖在輸出中包含反斜杠,但無法使其正常工作。

我想要的是這樣的..

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"

我希望組合的輸出為

myDomain\myUserName

我得到的是關於\是轉義字符的語法錯誤。 如果我輸入\\,則snytax錯誤消失了,但是輸出為myDomain \\ myUsername

如何在插入的字符串中包含轉義字符?


使用反斜杠( \ )轉義適用於除花括號外的所有字符。

如果要轉義大括號( {} ),則必須按照 https://msdn.microsoft.com/en-us/library/dn961160.aspx 使用 {{}}

...所有出現的雙大括號(“ {{”和“}}”)都轉換為單個大括號。


嗨,內插字符串中的反斜杠轉義規則與反斜杠重複:

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\\{userName}";

但是,如果您還使用插值字符串作為逐字字符串,則無需轉義反斜杠:

var domain = "mydomain";
var userName = "myUserName";
var combo = [email protected]"{domain}\{userName}";

和你得到相同的:

有關插值字符串的教程, 請參見視頻插值字符串


您可以同時使用$ @。 順序很重要。

var combo = [email protected]"{domain}\{userName}";

愛德華多是正確的。 您可以通過加倍來避開花括號。 因此,如果要將域變量輸出為{mydomain},則需要執行以下操作:

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{{{domain}}}\\{{{userName}}}";
Console.WriteLine(combo);

此外,假設當前日期為2016年9月1日,請執行以下操作:

$"{{{domain}}}";

會根據您的本地化輸出類似“日期為2016/09/01 3:04:48 PM”的信息。 您還可以通過以下方式設置日期格式:

$"The date is {DateTime.Now}";

將會輸出“日期是2016年9月1日”。 內插的字符串更具可讀性。 好的答案愛德華多。





string-interpolation