строковые двойные кавычки заменяют на пустые в c # - PullRequest
3 голосов
/ 20 августа 2010

У меня есть строка.

There are no items to show in this view of the "Personal Documents"

затем присвойте строковую переменную str

string str ="There are no items to show in this view 
of the \"Personal Documents\" library"

Теперь планируем заменить "\" и сделать его фактической строкой для объекта str.Я попробовал ниже, но не сработало

str = str.Replace(@"\",string.Empty);

Я хочу, чтобы значение str было

string str ="There are no items to show in this view 
of the "Personal Documents" library"

Мне нужно найти эту строку в другой строке.При поиске в этой строке.Я не смог найти, потому что str содержит "\".

Ответы [ 4 ]

13 голосов
/ 20 августа 2010

Для выражения строки

There are no items to show in this view of the "Personal Documents"

в C # вам нужно экранировать символ ", потому что " используется в C # для включения строковых литералов.

Есть два варианта:

  • обычные строковые литералы

    string str = "There are no items to show in this view of the \"Personal Documents\"";
                                                                 ↑                   ↑
    
  • и дословные строковые литералы

    string str = @"There are no items to show in this view of the ""Personal Documents""";
                 ↑                                                ↑                   ↑
    

Обратите внимание, что в обоих случаях экранируется символ ".

В обоих случаях переменная str содержит одну и ту же строку. Например,

Console.WriteLine(str);

печать

There are no items to show in this view of the "Personal Documents"

См. Также: Строки (MSDN)


РЕДАКТИРОВАТЬ: Если у вас есть строка

There are no items to show in this view of the "Personal Documents"

и хотите превратить в

There are no items to show in this view of the Personal Documents

вы можете использовать метод String.Replace , например:

string str = "There are no items to show in this view of the \"Personal Documents\"";

string result = str.Replace("\"", "");

"\"" обозначает строку, состоящую из одного символа " (который, опять же, экранируется в этом обычном строковом литерале), а "" - пустая строка.

3 голосов
/ 20 августа 2010

Если я правильно понимаю ваш вопрос, вы хотите заменить \" строковой константы на ".Это не нужно, это делает компилятор за вас.

Причина, по которой вы должны поставить \ (escape-последовательность) перед ", состоит в том, чтобы сообщить компилятору, что вы хотите включить" в строке, чтобы не завершать строковую константу.

При сохранении в памяти escape-символ уже удаляется, а когда строка используется (например, выводится на экран), она не отображается.

Например, строка:

Console.WriteLine("A string with a \" and a \\\" too.");

Будет печататься как:

A string with a " and a \" too.
2 голосов
/ 20 августа 2010
string str ="There are no items to show in this view of the \"Personal Documents\" library";

это отлично работает.

запустите консольное приложение и запишите str на консоль с Console.Write в качестве повышения уверенности.

0 голосов
/ 20 августа 2010

Попробуйте:

string str = @"There are no items to show in this view of the ""Personal Documents"" library"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...