2011-01-07 3 views
2

Мне нужно заменить 2 двойных кавычки на 1 двойную кавычку.C# forwardonly string.replace

Но я хочу, чтобы это было только вперед, поэтому, если есть 4 двойных кавычки, я хочу вернуть две двойные кавычки.

string.replace() даст только 1 двойную кавычку назад, так как она начинается с 0-го индекса, чтобы снова искать две двойные кавычки.

Любые предложения?

ответ

4

Я пропустил пункт? Я спрашиваю, потому что простой

string s = "\"\"Test.\"\""; 
string t = s.Replace("\"\"", "\""); 
Console.WriteLine("Before: " + s); 
Console.WriteLine("After: " + t); 

просто выходной

Before: ""Test."" 
After: "Test." 

и

string u = "\"\"\"\""; 
string v = w.Replace("\"\"", "\""); 
Console.WriteLine("Before: " + u); 
Console.WriteLine("After: " + v); 

только выход

Before: """" 
After: "" 

на моей консоли. Пожалуйста, покажите нам, что у вас уже есть, вывод, который он производит, и вывод, который вы хотите, потому что, когда я прочитал ваш вопрос, вышесказанное выполняет ваш запрос.

+1

Спасибо, Джейсон. Наверное, я не думал прямо. Я использовал Trim() в дополнение к replace(), который возился с моим окончательным результатом. Ваш ответ помог мне осознать ошибку. Еще раз спасибо! – NiTiN

3

Ваше утверждение не кажется правильными, строка из четырех двойных кавычек, замещающих две двойных кавычек с одной результатами в виде строки из двух двойных кавычек:

Console.WriteLine("\"\"\"\"".Replace("\"\"", "\"")); 

производит

"" 

На самом деле, для Replace не имеет смысла работать, чтобы возобновить поиск совпадений по индексу 0. Когда первое совпадение найдено и заменено, мы знаем, что совпадений нет в предыдущей подстроке.

+0

Дох. Что сказал @ Джейсон! :) –

+0

Дал вам +1, потому что исходный ответ Джейсона не включал в себя четыре кавычки подряд. :) – Sapph

+0

@ Sapph - спасибо, я думал, что побью его, и он возится с «Тест». «И все :) –

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