我正在寻找使用System.UriBuilder更改给定System.Uri实例的方案的规范方法,而不需要糟糕的字符串操作和魔术常量.说我有
var uri = new Uri("http://localhost/hello")
Run Code Online (Sandbox Code Playgroud)
我需要将其更改为" https ".我的问题是在有限的UriBuilder
ctors和Uri.Port
默认为80(我们应该将它改为443?硬编码?).代码必须遵守所有Uri
属性,例如可能的基本身份验证凭据,查询字符串等.
我正在尝试创建一个C#例程,删除所有以下前缀和后缀,并只返回域的根词:
var stripChars = new List<string> { "http://", "https://", "www.", "ftp.", ".com", ".net", ".org", ".info", ".co", ".me", ".mobi", ".us", ".biz" };
Run Code Online (Sandbox Code Playgroud)
我使用以下代码执行此操作:
originalDomain = stripChars.Aggregate(originalDomain, (current, repl) => Regex.Replace(current, repl, @"", RegexOptions.IgnoreCase));
Run Code Online (Sandbox Code Playgroud)
这似乎几乎适用于所有情况.但是,今天我发现将"originalDomain"设置为"NameCheap.com"并不会返回:
NameCheap
Run Code Online (Sandbox Code Playgroud)
喜欢它应该,但是:
NCheap
Run Code Online (Sandbox Code Playgroud)
谁能看到这个并告诉我出了什么问题?任何帮助,将不胜感激.