Экранирование экранированной строки в методе GET Web-Api контроллера
У меня есть контроллер,который принимает строку в качестве аргумента:
[HttpGet]
public object Get(string str)
{
////
}
я передаю в него строку с экранированными кавычками: 010352870230181421N6e=qV*9\"'M/t
в итоге внутри контроллера получаю строку: 010352870230181421N6e=qV*9\\\"'M/t
Хотелось бы изменить это поведение, так, чтобы строка оставалась в прежнем состоянии. Или хотя-бы использовать какой-то метод из коробки, чтобы вернуть ее в прежнее состоянии. Дело в том, что Replace тут тоже не работает.
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Эта строка дважды экранирована, ее можно дважды разэкранировать.
Способов много, вот один из них
str = Regex.Unescape(Regex.Unescape(str));
Получится
010352870230181421N6e=qV*9"'M/t
Или так попробовать
public string Unescape(string text)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < text.Length; i++);
{
if (text[i] == '\\' && i < text.Length - 1)
sb.Append(text[++i]);
else
sb.Append(text[i]);
}
return sb.ToString();
}