从Server.UrlEncode获取字符串为大写

我希望它的输出为大写。 这是我在Server.UrlEncode("http://")

 http%3a%2f%2f 

但是我需要:

 http%3A%2F%2F 

C#中有内置的解决方案吗?


编码的url应作为签名基本字符串(输入到签名算法)来创建摘要(哈希)。 然后哈希将由其他系统(java,php等)validation,因此他们需要首先通过签名重建来重新创建哈希。

这将大写字符串中的所有转义字符。

 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()); 
 Uri.EscapeDataString("http://") 

此代码返回

 http%3A%2F%2F 

这很容易


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

即将所有hex字母数字组合替换为大写

假设“http”总是前四个字符,那么你只需将字符串拆分为“http”后, UrlEncode将该部分分开然后调用ToUpper() 。 然后加入“http”作为您的前缀。