Получить строку из Server.UrlEncode в верхнем регистре - PullRequest
12 голосов
/ 16 июня 2011

Я хочу вывод в верхнем регистре. Это то, что я получаю на Server.UrlEncode("http://"):

http%3a%2f%2f

но мне нужно:

http%3A%2F%2F

Есть ли встроенное решение в C #?


Кодированный URL-адрес должен служить базовой строкой подписи (вход в алгоритм подписи) для создания дайджеста (хеша). Затем хэш будет проверен другой системой (java, php и т. Д.), Поэтому им необходимо сначала воссоздать хеш путем восстановления сигнатуры.

Ответы [ 4 ]

26 голосов
/ 16 июня 2011

Это будет прописными буквами всех экранированных символов в вашей строке.

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());
9 голосов
/ 17 января 2018
Uri.EscapeDataString("http://")

Этот код возврата

http%3A%2F%2F
3 голосов
/ 19 февраля 2015

Это очень просто

Regex.Replace( encodedString, @"%[a-f\d]{2}", m => m.Value.ToUpper() )

Т.е. заменить все шестнадцатеричные комбинации букв и цифр на прописные

0 голосов
/ 16 июня 2011

Предполагая, что "http" всегда первые четыре символа, вы просто разбиваете строку после "http", UrlEncode этой части и затем вызываете ToUpper() для нее.Затем присоединитесь вместе с http в качестве префикса.

...