Saya telah menggunakan interpolasi string dan menyukainya, namun saya memiliki masalah di mana saya mencoba memasukkan garis miring terbalik dalam output saya, tetapi saya tidak dapat membuatnya berfungsi.
Yang saya inginkan adalah sesuatu seperti ini ..
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"
Saya ingin hasil combo menjadi
myDomain\myUserName
Apa yang saya dapatkan adalah kesalahan sintaks tentang \ menjadi karakter pelarian. Jika saya memasukkan \\ maka kesalahan snytax hilang, tetapi hasilnya adalah myDomain \\ myUsername
Bagaimana cara menyertakan karakter yang lolos dalam string interpolasi?
c#
.net
string-interpolation
Matt
sumber
sumber
$@"{domain}\{userName}"
. Saya pikir Anda harus mencobanya, dan menerimanya. Saya memiliki masalah yang persis sama, hingga itu juga menjadi domain dan nama pengguna, dan metodenya berfungsi dengan baik.Jawaban:
Melarikan diri dengan garis miring terbalik (
\
) berfungsi untuk semua karakter kecuali tanda kurung kurawal.Jika Anda mencoba melepaskan kurung kurawal (
{
atau}
), Anda harus menggunakan{{
atau}}
sesuai dengan https://msdn.microsoft.com/en-us/library/dn961160.aspx .sumber
Anda dapat melakukan ini, menggunakan $ @. Urutan itu penting.
var combo = $@"{domain}\{userName}";
sumber
Eduardo benar. Anda melepaskan diri dari kawat gigi keriting dengan menggandakan. Oleh karena itu, jika Anda ingin mengeluarkan variabel domain sebagai {mydomain}, Anda perlu melakukan:
$"{{{domain}}}";
Selanjutnya, dengan asumsi tanggal saat ini adalah 1 Sept 2016, lakukan ini:
$"The date is {DateTime.Now}";
akan menghasilkan sesuatu seperti "The date is 2016/09/01 3:04:48 PM" tergantung pada pelokalan Anda. Anda juga dapat memformat tanggal dengan melakukan:
$"The date is {DateTime.Now : MMMM dd, yyyy}";
yang akan menampilkan "The date is September 1, 2016". String yang diinterpolasi jauh lebih mudah dibaca. Jawaban bagus Eduardo.
sumber
$"{domain}\\{user}"
Bekerja dengan baik - melarikan diri berfungsi seperti biasa (kecuali saat melarikan diri
{
). Setidaknya pada .NET 4.6 dan VS 14.0.22823 D14REL.Jika tidak berhasil karena beberapa alasan (mungkin Anda menggunakan versi kompiler yang lebih lama?), Anda juga dapat mencoba lebih eksplisit:
$"{domain}{@"\"}{user}"
sumber
Hai aturan untuk melarikan diri dari garis miring belakang dalam string yang diinterpolasi adalah duplikat garis miring belakang:
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{domain}\\{userName}";
tetapi jika Anda juga menggunakan string yang diinterpolasi sebagai string kata demi kata maka Anda tidak perlu keluar dari garis miring belakang:
var domain = "mydomain"; var userName = "myUserName"; var combo = $@"{domain}\{userName}";
dan Anda mendapatkan hal yang sama:
Untuk tutorial tentang string interpolasi: lihat video string interpolasi
sumber
Jika saya tidak salah paham. Solusinya sangat sederhana
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{{{domain}}}\\{{{userName}}}"; Console.WriteLine(combo);
Saya membagikan jawaban birdamongmen serta referensi bagus yang disediakan di sana. Semoga bermanfaat bagi Anda. 5 sen saya
sumber
Anda dapat menggunakan ini -
'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
sumber