我有一个像
这样的字符串<Scheme>:\\<domain>\<domainuser>:<EncryptedPassword>@servername\
我希望能够创建统一资源标识符(URI)并轻松访问URI的各个部分。对于大多数使用C#Uri类的人来说效果很好。但是当用户被提供为&#34; domainname \ domainuser&#34;时,我得到无效的URI异常。
如何在C#中最好地处理这个问题。
答案 0 :(得分:2)
你必须PercentEncode(/ EscapeDataString)这样的字符串。
如上所述,在创建URI对象之前,必须将用户名“xyz_domain \ abc_user”编码为“xyz_domain%5Cabc_user”。
在解压缩之后,您可以使用Uri Class中的UnescapeDataString方法对字符串执行PercentDecode(/ UnescapeDataString)。您可以使用C#Uri Class中的UnescapeDataString方法 这是代码
public static string GetUsername(this Uri uri)
{
if (uri == null || string.IsNullOrWhiteSpace(uri.UserInfo))
return string.Empty;
var items = uri.UserInfo.Split(new[] { ':' });
//Replace precent encoding in the username.
var result = Uri.UnescapeDataString(items[0]);
return result.Length > 0 ? result : string.Empty;
}
类似的方案可以应用于uri字符串的任何部分。只需记住UnescapeDataString的EscapeDataStrings即可。