Używam interpolacji ciągów i uwielbiam to, jednak mam problem polegający na tym, że próbuję dołączyć ukośnik odwrotny do moich danych wyjściowych, ale nie mogę go uruchomić.
To, czego chcę, to coś takiego ...
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"
Chcę, aby wynik combo był
myDomain\myUserName
Otrzymuję błąd składni dotyczący znaku \ będącego znakiem zmiany znaczenia. Jeśli wstawię \\, błąd snytax zniknął, ale wyjście to mojaDomena \\ nazwa_użytkownika
Jak mogę dołączyć znaki ucieczki w ciągu interpolowanym?
c#
.net
string-interpolation
Matt
źródło
źródło
$@"{domain}\{userName}"
. Myślę, że powinieneś spróbować i zaakceptować to. Miałem dokładnie ten sam problem, sprowadzając się do domeny i nazwy użytkownika, a jego metoda działa dobrze.Odpowiedzi:
Zmiana ucieczki z ukośnikiem odwrotnym (
\
) działa dla wszystkich znaków oprócz nawiasu klamrowego.Jeśli próbujesz uciec przed nawiasem klamrowym (
{
lub}
), musisz użyć{{
lub}}
na https://msdn.microsoft.com/en-us/library/dn961160.aspx .źródło
Możesz to zrobić, używając zarówno $ @. Kolejność jest ważna.
var combo = $@"{domain}\{userName}";
źródło
Eduardo ma rację. Unikasz kręconych szelek, podwajając się. Dlatego jeśli chcesz wyprowadzić zmienną domeny jako {moja_domena}, musisz zrobić:
$"{{{domain}}}";
Ponadto, zakładając, że aktualna data to 1 września 2016 r., Wykonaj następujące czynności:
$"The date is {DateTime.Now}";
wyświetli coś w rodzaju „Data to 2016/09/01 3:04:48 PM” w zależności od lokalizacji. Możesz też sformatować datę, wykonując:
$"The date is {DateTime.Now : MMMM dd, yyyy}";
co spowoduje wyświetlenie tekstu „Data to 1 września 2016 r.”. Ciągi interpolowane są znacznie bardziej czytelne. Dobra odpowiedź, Eduardo.
źródło
$"{domain}\\{user}"
Działa dobrze - ucieczka działa jak zwykle (z wyjątkiem ucieczki
{
). Przynajmniej na .NET 4.6 i VS 14.0.22823 D14REL.Jeśli z jakiegoś powodu to nie zadziała (może używasz starszej wersji kompilatora?), Możesz również spróbować wyrazić się bardziej szczegółowo:
$"{domain}{@"\"}{user}"
źródło
Cześć, reguła ucieczki ukośnika w interpolowanym ciągu jest duplikatem ukośnika:
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{domain}\\{userName}";
ale jeśli używasz również interpolowanego ciągu jako ciągu dosłownego, nie musisz uciekać przed ukośnikiem:
var domain = "mydomain"; var userName = "myUserName"; var combo = $@"{domain}\{userName}";
i otrzymujesz to samo:
Aby zapoznać się z samouczkiem dotyczącym interpolowanego ciągu znaków: zobacz wideo interpolowany ciąg
źródło
Gdybym nie przegapił zrozumienia. Rozwiązanie jest naprawdę proste
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{{{domain}}}\\{{{userName}}}"; Console.WriteLine(combo);
Dzielę się odpowiedzią ptaków wśród ludzi, a także dobrą referencją. Mam nadzieję, że to ci pomoże. Moje 5 centów
źródło
Możesz tego użyć -
'First, declare the curley braces as chars Dim LeftBrace As Char = "{" Dim RightBrace As Char = "}" 'Then in your string, use like this- Dim myStr As String = $"This is a {LeftBrace}String{RightBrace}" 'Now, the output will be ' This is a {string}code here
źródło