Я использую интерполяцию строк и мне это нравится, однако у меня есть проблема, когда я пытаюсь включить обратную косую черту в свой вывод, но не могу заставить ее работать.
Я хочу что-то вроде этого ...
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"
Я хочу, чтобы результат комбо был
myDomain\myUserName
Я получаю синтаксическую ошибку о том, что \ является escape-символом. Если я введу \\, то ошибка snytax исчезнет, но на выходе будет myDomain \\ myUsername
Как включить экранированные символы в интерполированную строку?
$@"{domain}\{userName}"
. Я думаю, тебе стоит попробовать и принять это. У меня была точно такая же проблема, вплоть до домена и имени пользователя, и его метод отлично работает.Ответы:
Экранирование обратной косой чертой (
\
) работает для всех символов, кроме фигурной скобки.Если вы пытаетесь избежать фигурной скобки (
{
или}
), вы должны использовать{{
или}}
на https://msdn.microsoft.com/en-us/library/dn961160.aspx .источник
Вы можете сделать это, используя как $ @. Порядок важен.
var combo = $@"{domain}\{userName}";
источник
Эдуардо прав. Вы избегаете фигурных скобок, удваиваясь. Следовательно, если вы хотите вывести переменную домена как {mydomain}, вам нужно будет сделать:
$"{{{domain}}}";
Кроме того, предполагая, что текущая дата - 1 сентября 2016 г., сделаем следующее:
$"The date is {DateTime.Now}";
выведет что-то вроде «Дата 2016/09/01 15:04:48 PM» в зависимости от вашей локализации. Вы также можете отформатировать дату, выполнив:
$"The date is {DateTime.Now : MMMM dd, yyyy}";
который выведет "Дата 1 сентября 2016 г.". Интерполированные строки более читабельны. Хороший ответ Эдуардо.
источник
$"{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}";
и вы получите то же самое:
Учебник по интерполированной строке: см. Видео интерполированная строка
источник
Если я не неправильно понял. Решение очень простое
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{{{domain}}}\\{{{userName}}}"; Console.WriteLine(combo);
Я разделяю ответ birdamongmen, а также хорошую ссылку, предоставленную там. Надеюсь, это будет вам полезно. Мои 5 центов
источник
Вы можете использовать это -
'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
источник