2013-10-07 5 views
-1

У меня есть проблема, которая кажется простой, но для жизни меня, я не могу понять, как выполнить егоЗаменить »в строке

Вот моя стартовая строка:.

Hello \"this is my string\" 

Вот что я хочу, чтобы результат:.

Hello "this is my string" 

Так в основном, мне нужно заменить \" только с "

I не хотите просто удалить ВСЕ вхождения \, так как в моей строке может существовать одна обратная косая черта. Я просто хочу заменить вхождения \" на ".

+1

Что вы пытались? – SLaks

+2

Где вы видите' '' ''? В отладчике? – Habib

+0

Какой у вас код до сих пор? – Arran

ответ

3

Если строка на самом деле содержит \ ":

var replaced = myString.Replace(@"\""", @"""") 
+0

Это сработало. Спасибо! Я соглашусь как можно скорее, как только смогу. – FastTrack

-1

Попробуйте yourString.Replace("\\\"", "");

+0

@downvoter, why вниз? –

0

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

myString.Replace(@"\"+'"', '"'.ToString()) 

Обратите внимание, что отладчик C# показывает " как \", поэтому ваша строка может фактически иметь только " s. Например. string helloWorld = "Hello \"World\""; отображается в отладчике так же, как и в коде, "Hello \"World\"", а не как значение строки, Hello "World".

2

Вы можете быть смущены синтаксическим трюком, который C# использует для вставки символа кавычки внутри строк. Рассмотрим:

string abc = "This is a "quote""; // INVALID SYNTAX, compile will complain 
string def = "This is a \"quote\""; // this is ok 

В этом случае символ \ упоминается как экранирующий символ, и это заставляет компилятор игнорировать следующий символ и просто положить его в строку. Полученная строка фактически не содержит символ \. Если вы сделаете это:

string ghi = "This is a \\\"quote\\\""; // this is ok 

Результирующая строка будет содержать \ и «если вы хотите, чтобы заменить это вы можете сделать следующее:

string newghi = ghi.Replace("\\\"", "\""); 

Это заменит все \» вхождений с "

Смежные вопросы