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

Заменить одиночную обратную косую черту двойным обратным слэшем

Кажется, достаточно просто, не так ли? Ну, я не знаю.

Вот код, который я пытаюсь:

input = Regex.Replace(input, "\\", "\\\\\\");

Однако, я получаю сообщение об ошибке,

Нарушение ArgumentException было необработанным - разбор "\" - "Незаконный" в конце шаблона.

Как это сделать?

4b9b3361

Ответ 1

Первый должен быть "\\\\", а не "\\". Он работает следующим образом:

  • Вы написали "\\".
  • Это означает последовательность \ в строке.
  • Затем двигатель regex считывает это, что переводит как обратную косую черту, которая не ускользает, поэтому она выдает ошибку.

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

Ответ 2

Если вы хотите заменить одну обратную косую черту на два, может быть яснее исключить один уровень экранирования в регулярном выражении, используя @"..." как формат для ваших строковых литералов, также известный как строка в виде строки. Тогда легче видеть, что

string output = Regex.Replace(input, @"\\", @"\\");

является заменой от \ до \\.

Ответ 3

 var result = Regex.Replace(@"afd\tas\asfd\", @"\\", @"\\");

Первым параметром является строка \\, которая является \in regex.
Второй параметр не обрабатывается регулярным выражением, поэтому он будет помещать его как есть, при замене.

Ответ 4

Если вы собираетесь использовать ввод в шаблоне регулярного выражения позже, может быть хорошей идеей использовать Regex.Encode.

input = Regex.Escape(input);

Ответ 5

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

text = text.Replace(@"\",@"\\");

и я нахожу его еще более простым.

Ура!