私は文字列補間を使用し、それを愛していますが、出力にバックスラッシュを含めようとしていますが、それを機能させることができないという問題があります。
私が欲しいのはこのようなものです。
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 combo = $@"{domain}\{userName}";
$"{domain}\\{user}"
正常に動作します-エスケープは通常どおり動作します({
をエスケープする場合を除く)。少なくとも.NET 4.6およびVS 14.0.22823 D14RELで。
何らかの理由で動作しない場合(古いバージョンのコンパイラを使用している可能性がありますか?)、より明示的にすることもできます。
$"{domain}{@"\"}{user}"
こんにちは、補間された文字列のバックスラッシュをエスケープするルールは、バックスラッシュを複製します:
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\\{userName}";
ただし、補間された文字列を逐語的な文字列として使用する場合は、バックスラッシュをエスケープする必要はありません。
var domain = "mydomain";
var userName = "myUserName";
var combo = $@"{domain}\{userName}";
そして、あなたは同じことを得る:
補間された文字列に関するチュートリアル: ビデオの補間された文字列を参照
エドゥアルドは正しいです。二重にして中括弧をエスケープします。したがって、ドメイン変数を{mydomain}として出力する場合は、次の手順を実行する必要があります。
$"{{{domain}}}";
さらに、現在の日付が2016年9月1日であると仮定して、次の操作を行います。
$"The date is {DateTime.Now}";
ローカライズに応じて、「日付は2016/09/01 3:04:48 PM」のような出力になります。また、次のようにして日付をフォーマットすることもできます。
$"The date is {DateTime.Now : MMMM dd, yyyy}";
「日付は2016年9月1日です」と出力されます。補間された文字列ははるかに読みやすくなります。エドゥアルド、いい答えだ。
私が誤解しなかった場合。ソリューションは本当にシンプルです
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{{{domain}}}\\{{{userName}}}";
Console.WriteLine(combo);
私は、そこに提供された良い参考文献と同様に野鳥の答えを共有します。お役に立てば幸いです。私の5セント