Уникнути подвійних лапок у рядку


173

Подвійні цитати можна уникнути так:

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

Але це передбачає додавання символу "до рядка. Чи є функція C # чи інший метод, щоб уникнути подвійних лапок, так що не потрібно змінювати рядки?


5
ви можете використовувати \ "Hello World \", як це
Пандіан

1
Чого ти насправді хочеш? "" стає "в прямому рядку.
Roel

Аналогічне запитання для C / C ++ (оскільки це може бути найпопулярнішим хітом пошукової системи): Як я можу отримати подвійні лапки в рядковий літерал?
Пітер Мортенсен

Відповіді:


226

Немає.

Або використовуйте дослівні рядкові літерали, як у вас є, або не "використовуйте зворотну косу рису.

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

Рядок не змінився в жодному випадку - в ньому є єдиний втік " . Це лише спосіб сказати C #, що символ є частиною рядка, а не строковим термінатором.


81

Ви можете використовувати зворотний нахил будь-яким способом;

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.


18

У C # ви можете скористатися зворотною косою рисою для додавання до рядка спеціальних символів. Наприклад, щоб поставити ", вам потрібно написати \". Існує дуже багато символів, які ви пишете за допомогою зворотної косої риси: зворотний косий рядок з числом

  • \ 000 нуль
  • \ 010 зворотній простір
  • \ 011 горизонтальна вкладка
  • \ 012 новий рядок
  • \ 015 повернення вагона
  • \ 032 замінник
  • \ 042 подвійна цитата
  • \ 047 єдина цитата
  • \ 134 нахил
  • \ 140 серйозний наголос

Зворотна риса з іншим характером

  • \ дзвін (оповіщення)
  • \ b Резервна область
  • \ f Formfeed
  • \ n Новий рядок
  • повернення каретки
  • \ t горизонтальна вкладка
  • \ v Вертикальна вкладка
  • \ 'Єдиний лапки
  • \ "Подвійна лапка
  • \ Зворотний кут
  • \? Буквальний знак питання
  • \ ooo ASCII символ у восьмеричних позначеннях
  • \ x hh ASCII символ у шістнадцятковій нотації
  • \ x hhhh Символ Unicode у шістнадцятковій нотації, якщо ця послідовність виходу використовується в константі широкого символу або літеральному рядку Unicode. Наприклад, WCHAR f = L '\ x4e00' або WCHAR b [] = L "Китайський символ для одного - \ x4e00".

6

Ти нерозумієш втечу.

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

Дійсне значення рядка все ще зберігається He said to me , "Hello World".How are you ?, оскільки ви побачите, якщо надрукувати його під час виконання.


4

Будь ласка, поясніть свою проблему. Ти кажеш:

Але це включає додавання символу "до рядка.

Яка проблема це? Ви не можете вводити string foo = "Foo"bar"";, оскільки це призведе до помилки компіляції. Що стосується частини, що додається , у строкових розмірах, що не відповідає дійсності:

@"""".Length == "\"".Length == 1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.