Помещение \"в дословную строку с C#
Мне нужно распечатать
a
"b"
c
со строкой vebatim я поставил здесь еще один вопрос о шаблоне кода из нескольких строк.
Я попробовал с дословной строкой следующее:
using System;
class DoFile {
static void Main(string[] args) {
string templateString = @"
{0}
\\"{1}\\"
{2}
";
Console.WriteLine(templateString, "a", "b", "c");
}
}
Но я получил эту ошибку.
t.cs(8,11): error CS1525: Unexpected symbol `{'
t.cs(9,0): error CS1010: Newline in constant
t.cs(10,0): error CS1010: Newline in constant
\"{1}\"
не работает ни
В чем дело?
7 ответов
Попробуйте это ( "вместо" чтобы убежать)
string templateString = @"
{0}
""{1}""
{2}
";
Из спецификации C#: http://msdn.microsoft.com/en-us/library/Aa691090
quote-escape-sequence: ""
В дословном строковом литерале вы используете ""
для двойных кавычек.
string line = @"
{0}
""{1}""
{2}";
При использовании многострочного строкового литерала в C# с @"
правильная escape-последовательность для двойной кавычки становится ""
вместо \"
,
string templateString = @"
{0}
""{1}""
{2}
";
В @"
строка, встроенные двойные кавычки экранируются как ""
,не \"
, Измените свой код на
string templateString = @"
{0}
""{1}""
{2}
";
и твои проблемы должны уйти.
Используйте двойную двойную кавычку, чтобы получить одинарную двойную кавычку в выходных данных. Это так же, как старый VB6 будет обрабатывать строки.
@" ""something"" is here";
содержит строку с кавычками вокруг чего-либо.
string templateString = @"
{0}
""{1}""
{2}
";
РЕДАКТИРОВАТЬ: Обновлено, чтобы показать правильный синтаксис при использовании Verbatim.