Cela semble assez simple, non? Eh bien, je ne sais pas.
Voici le code que j'essaye:
input = Regex.Replace(input, "\\", "\\\\\\");
Cependant, je reçois une erreur,
ArgumentException n'a pas été géré - analyse "\" - Illégal\à la fin du modèle.
Comment puis-je faire cela?
Le premier devrait être "\\\\"
, pas "\\"
. Cela fonctionne comme ceci:
"\\"
.\
dans une chaîne.Avec regex, il est beaucoup plus facile d'utiliser une "chaîne textuelle". Dans ce cas, la chaîne textuelle serait @"\\"
. Lorsque vous utilisez des chaînes textuelles, il vous suffit de considérer l'échappement pour le moteur regex, car les barres obliques inverses sont traitées de manière littérale. La deuxième chaîne sera également @"\\"
, car elle ne sera pas interprétée par le moteur de regex.
Si vous souhaitez remplacer une barre oblique inversée par deux, il peut s'avérer plus simple d'éliminer un niveau d'échappement dans l'expression régulière en utilisant @"..."
comme format pour vos littéraux de chaîne, également appelé chaîne in extenso. Il est alors plus facile de voir que
string output = Regex.Replace(input, @"\\", @"\\");
est un remplacement de \
à \\
.
var result = Regex.Replace(@"afd\tas\asfd\", @"\\", @"\\");
Le premier paramètre est la chaîne \\ qui est\in regex.
Le deuxième paramètre n'est pas traité par regex, il sera donc mis tel quel lors du remplacement.
Si vous souhaitez utiliser l’entrée dans un motif regex ultérieurement, il peut être judicieux d’utiliser Regex.Encode.
input = Regex.Escape(input);
Je sais qu'il est trop tard pour vous aider, peut-être que quelqu'un d'autre en profitera. Quoi qu'il en soit, cela a fonctionné pour moi:
text = text.Replace(@"\",@"\\");
et je le trouve encore plus simple.
À votre santé!