从c#中的字符串中提取基本URl?

Pus*_*ode 24 .net c# string

我目前正在开发一个使用.NET 1.1框架的项目,我现在陷入困境.我有一个像" http://www.example.com/mypage/default.aspx " 这样的字符串,或者它可能是" http://www.example.edu/mypage/default.aspx "或" http:// www .example.eu/mypage/default.aspx ".如何从这种字符串中提取基本URl.

谢谢

Adi*_*dil 71

您可以使用URI类来获取主机名.

var uri = new Uri("http://www.example.com/mypage/default.aspx");    
var host = uri.Host;
Run Code Online (Sandbox Code Playgroud)

编辑您可以使用uri.Schemeuri.Port获取.Scheme例如(http,ftp)和.Port以获取端口号,如(8080)

string host = uri.Host;
string scheme = uri.Scheme;
int port = uri.Port;
Run Code Online (Sandbox Code Playgroud)

您可以使用Uri.GetLeftPart获取基本URL.

GetLeftPart方法返回包含URI字符串的最左侧部分的字符串,由部分所指定的部分结束.

var uri = new Uri("http://www.example.com/mypage/default.aspx");    
var baseUri = uri.GetLeftPart(System.UriPartial.Authority);
Run Code Online (Sandbox Code Playgroud)

以下示例显示了URI以及使用Scheme,Authority,Path或Query,MSDN调用GetLeftPart的结果. 在此输入图像描述

  • @HRK:我不明白如何通过提供主机的答案满足对"基本URI"的请求.这不是你问的. (2认同)
  • 这给了'www.example.com`(不包括任何端口或协议) (2认同)

Mys*_*ter 51

myUri.GetLeftPart(System.UriPartial.Authority)
Run Code Online (Sandbox Code Playgroud)

假设"基本URI"意味着类似的东西http://www.example.com,你可以得到这样的基础uri:

var myUri= new Uri("http://www.example.com/mypage/default.aspx");    
var baseUri = myUri.GetLeftPart(System.UriPartial.Authority)
Run Code Online (Sandbox Code Playgroud)

这给出了: http://www.example.com

注意:uri.Host给出:( www.example.com不包括端口或方案)


spe*_*der 5

var builder = new UriBuilder("http://www.example.com/mypage/default.aspx");
builder.Path = String.Empty;
var baseUri = builder.Uri;
var baseUrl = baseUri.ToString();
// http://www.example.com/
Run Code Online (Sandbox Code Playgroud)