Получить строку из 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" в качестве вашего префикса.