Экранирование экранированной строки в методе 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();
}
→ Ссылка