2016-01-30 7 views
5

Gdybym to zrobić:Jak zastąpić pojedynczy znak z backslashem użyciu Regex.Replace wC#

Regex.Replace("unlocktheinbox.com", "[t]", "\\$&"); 

Mój wynik to:

"unlock\\theinbox.com" 

ja spodziewałem się, że

"unlock\theinbox.com" 

Próbuję zastąpić "t" przez "\ t" za pomocą regex.replace. Zrobiłem ten przykład bardzo prosty, aby wyjaśnić, co próbuję osiągnąć.

+2

Spróbuj 'Regex.Replace ("unlocktheinbox.com", "[t]" @ "\");' – tchelidze

+3

Nope, przykład ty dostarczone działa zgodnie z oczekiwaniami. Jeśli opierasz swoje obserwacje w oknie podglądu/locals w Visual Studio, po prostu pokazuje '' unlock \\ theinbox.com "', \\ oznacza, że ​​jest to jeden ukośnik odwrotny, ale w ciągu znaków musi on zostać zmieniony. Jeśli 'Console.WriteLine' poza wynikowym łańcuchem, to wyświetla się poprawnie. –

+3

Twoje dane wyjściowe są poprawne, ale debugger pokazuje wynik jako poprawny ciąg C#. Spróbuj napisać na przykład na konsolę, a zobaczysz. –

Odpowiedz

3

Spróbuj następujących

var result = Regex.Replace("unlocktheinbox.com", "[t]", @"\"); 

zauważyć, że jeśli obserwowania result podczas debugowania przez unoszące się myszką na result. będzie wyglądać jak unlock\\theinbox.com, ponieważ \ jest chroniony. Ale faktycznie, jeśli wydrukować result lub używać w dowolnym miejscu będzie unlock\theinbox.com