Экранирование новой строки с помощью замены Regex.ReplaceC#

Место общения программистов C#
Ответить
Anonymous
 Экранирование новой строки с помощью замены Regex.Replace

Сообщение Anonymous »

Я пытался следовать документации по заменам, но мне не удалось заставить это регулярное выражение фиксировать правильные группы.
Я пытаюсь экранировать символы новой строки, пока игнорируя уже экранированные символы новой строки.

Код: Выделить всё

// Simple string with mixed escaped newlines and unescaped newlines
var TEST_STRING = "Hello\\rMy\r\nFriendly\\nWorld";

// Replace all unescaped newlines
// (?[rn]) - name the character matched in this group "symbol" for use in the replacement, match a 'r' or 'n'
var searchPattern = @"(?(\r|\n))";
var replacement = "\\${symbol}";
var substitutedString = Regex.Replace(input: TEST_STRING, searchPattern, replacement);

// check if the output matches
var EXPECTED_STRING = "Hello\\rMy\\r\\nFriendly\\nWorld";
Console.WriteLine(substitutedString);                    // "Hello\\rMy\\\r\\\nFriendly\\nWorld"
Console.WriteLine(substitutedString == EXPECTED_STRING); // FALSE
Я знаю, что могу записать и заменить их двумя отдельными поисковыми запросами: Любая помощь приветствуется!

Подробнее здесь: https://stackoverflow.com/questions/792 ... bstitution
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»