Подтвердить что ты не робот

С# как Regex.Replace "\ r\n" (фактические символы, а не разрыв строки)

У меня есть ужасный текст, который я очищаю, используя несколько регулярных выражений С#. Одна из проблем, которая меня озадачила, состоит в том, что в тексте есть ряд строк "\ r\n", фактические символы не разрываются.

Я пробовал:

content = Regex.Replace(content, "\\r\\n", "");

и

content = Regex.Replace(content, "\r\n", "");

но ни один из них не работает. В конце концов мне пришлось использовать:

content = content.Replace("\\r\\n", "\r\n");

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

4b9b3361

Ответ 1

\r и \n имеют особое значение в Regex, поэтому обратная косая черта должна быть экранирована. Затем эти обратные косые черты должны быть экранированы для строки С#, что приводит к

content = Regex.Replace(content, "\\\\r\\\\n", ""); 

или

content = Regex.Replace(content, @"\\r\\n", ""); 

Ответ 2

Это хорошая идея, чтобы привыкнуть использовать строковые литералы (@"example") при написании регулярных выражений в С#. В этом случае вам понадобилось следующее:

content = Regex.Replace(content, @"\\r\\n", "\r\n");

В противном случае вам нужно избежать каждой обратной косой черты дважды: один раз, чтобы избежать ее в строке С#, а затем второй раз, чтобы избежать их для регулярного выражения. Таким образом, одна обратная косая черта станет четырьмя обратными косыми чертами со стандартным строковым литералом.

Ответ 3

content = Regex.Replace(content, "\\\\r\\\\n", "");

может работать. Подробнее здесь.

Цитата:

В буквальных строках С#, а также в С++ и многих других языках .NET, обратная косая черта - это escape-символ. Литеральная строка "\\" является одиночной обратная косая черта. В регулярных выражениях обратная косая черта также является символом escape. Регулярное выражение\\соответствует одиночный обратный слэш. Этот регулярный выражение как строка С#, становится "\\\\". Это право: 4 обратных слэша чтобы соответствовать одному.

Примечание. Мне пришлось написать 8 обратных косых черт в следующем последнем предложении, чтобы отображались 4 обратных слэша; -)

Ответ 4

В пределах указанной входной строки Regex.Replace заменяет строки, которые соответствуют шаблону регулярного выражения с указанной заменой.

Типичное использование будет

  string input = "This is   text with   far  too     much   " +  "   whitespace.";
  string pattern = "\\s+";
  string replacement = " ";
  Regex rgx = new Regex(pattern);
  string result = rgx.Replace(input, replacement);

Не похоже, что вы пытаетесь сделать.

Ответ 5

Вопрос старый, но произошли изменения.

string temp = Regex.Replace(temp, "\\n", " ");

или лучше

string temp = Regex.Replace("tab    d_space  newline\n content here   :P", @"\s+", " ");
//tab d_space newline content here :P

Это работает на универсальных приложениях Windows и, возможно, на других.

Ответ 6

Лучший и простой ответ здесь. Он работает для меня с помощью Regex.

public static string GetMultilineBreak(this string content)
{
    return Regex.Replace(content, @"\r\n?|\n", "<br>"); 
}

Ответ 7

Дикая догадка здесь:

var bslash = System.IO.Path.DirectorySeparatorChar.ToString();

content = content.Replace(bslash + "r" + bslash + "n", "");