Подтвердить что ты не робот

Escape двойные кавычки в строке

Двойные кавычки могут быть экранированы следующим образом:

string test = @"He said to me, ""Hello World"". How are you?";

Но это связано с добавлением символа " в строку. Есть ли функция С# или другой метод, чтобы избежать двойных кавычек, чтобы не требовалось изменять строку?

4b9b3361

Ответ 1

Нет.

Используйте либо стенографические строковые литералы, либо у вас есть ", используя обратную косую черту.

string test = "He said to me, \"Hello World\" . How are you?";

Строка не изменилась ни в одном случае - в ней есть один escaped ". Это всего лишь способ сказать С#, что символ является частью строки, а не терминатором строк.

Ответ 2

Вы можете использовать обратную косую черту в любом случае;

string str = "He said to me, \"Hello World\". How are you?";

Он печатает;

He said to me, "Hello World". How are you?

который является точно такой же печатью с:

string str = @"He said to me, ""Hello World"". How are you?";

Вот DEMO.

" все еще является частью вашей строки.

Отъезд Escape Sequences и String literals из MSDN.

Ответ 3

В С# вы можете использовать обратную косую черту, чтобы помещать специальные символы в вашу строку. Например, чтобы поставить ", вам нужно написать". Есть много символов, которые вы пишете, используя обратную косую черту: Обратная косая черта с числом:

  • \000 null
  • \010 backspace
  • \011 горизонтальная вкладка
  • \012 новая строка
  • \015 возврат каретки
  • \032 заменить
  • \042 двойная кавычка
  • \047 одиночная кавычка
  • \134 обратная косая черта
  • \140 серьезный акцент

Обратная косая черта с символом

  • \a Bell (предупреждение)
  • \b Backspace
  • \f Formfeed
  • \n Новая строка
  • \r Возврат каретки
  • \t Горизонтальная вкладка
  • \v Вертикальная вкладка
  • \'Одиночная кавычка
  • \"Двойная кавычка
  • \Backslash
  • \? Литеральный знак вопроса
  • \ooo Символ ASCII в восьмеричной нотации
  • \x hh Символ ASCII в шестнадцатеричной нотации
  • \x hhhh Символ Юникода в шестнадцатеричной нотации, если эта escape-последовательность используется в широкосимвольной константе или в строковом литерале Unicode. Например, WCHAR f = L '\ x4e00' или WCHAR b [] = L "Китайский символ для одного -\x4e00".

Ответ 4

Вы ошибаетесь, убегая.

Дополнительные символы " являются частью строкового литерала; они интерпретируются компилятором как одиночный ".

Фактическое значение вашей строки все равно He said to me , "Hello World".How are you ?, как вы увидите, распечатываете ли вы его во время выполнения.

Ответ 5

Пожалуйста, объясните вашу проблему. Вы говорите:

Но это включает добавление символа в строку.

Какая проблема? Вы не можете набрать string foo = "Foo"bar"";, потому что это вызовет ошибку компиляции. Что касается добавления, то в строковых размерах это не так:

@"""".Length == "\"".Length == 1