C # forwardonly string.replace - PullRequest
       1

C # forwardonly string.replace

2 голосов
/ 08 января 2011

Я должен заменить 2 двойные кавычки на 1 двойную кавычку.

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

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

Есть предложения?

Ответы [ 2 ]

4 голосов
/ 08 января 2011

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

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: ""

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

3 голосов
/ 08 января 2011

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

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

производит

""

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...