Получить строку из Server.UrlEncode как прописную
Я хочу, чтобы его вывод был прописным. Это то, что я получаю Server.UrlEncode("http://")
:
http%3a%2f%2f
но мне нужно:
http%3a%2f%2f
Есть ли встроенное решение в С#?
Закодированный url должен служить базовой строкой подписи (входной сигнал для алгоритма подписи) для создания дайджеста (хэша).
Затем хэш будет проверен другой системой (java, php и т.д.), Поэтому сначала нужно воссоздать хэш с помощью реконструкции подписи.
Ответы
Ответ 1
Это приведет к тому, что все строковые символы будут сохранены в вашей строке.
string url = "http://whatever.com/something";
string lower = Server.UrlEncode(url);
Regex reg = new Regex(@"%[a-f0-9]{2}");
string upper = reg.Replace(lower, m => m.Value.ToUpperInvariant());
Ответ 2
Это очень легко
Regex.Replace( encodedString, @"%[a-f\d]{2}", m => m.Value.ToUpper() )
т.е. замените все шестнадцатеричные комбинации букв на верхний регистр
Ответ 3
Uri.EscapeDataString("http://")
Этот код возвращает
http%3A%2F%2F
Ответ 4
Предполагая, что "http" всегда является первыми четырьмя символами, вы просто разделяете строку после "http" , UrlEncode
эту часть, а затем вызываете ToUpper()
на ней. Затем присоединитесь вместе с "http" в качестве вашего префикса.