更改String.Substring

时间:2014-09-22 11:13:59

标签: c# .net

string url = "www.google.com/?filter=xpto";
string domain = url.Contains('?')
                ? url.Substring(0, url.IndexOf('?'));
                : url;

有没有更简单的方法来做这个而不必重写Substring方法?

3 个答案:

答案 0 :(得分:2)

您可以编写自己的扩展方法:

public static string GetDomain(this string url)
{
      return url.Contains('?')
                ? url.Substring(0, url.IndexOf('?'));
                : url;
}

用法:

string domain = url.GetDomain();

答案 1 :(得分:1)

如果使用Uris,也不应使用字符串方法。由于你的uri有些格式错误(例如,它不包含协议),因此提取域名有点困难:

string url = "www.google.com/?filter=xpto";
if (!url.Contains("://")) url = "http://" + url;  // presume HTTP
string domain = url;
string host = url;
Uri uri;
if (Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out uri))
{
    domain = uri.GetLeftPart(UriPartial.Authority); // http://www.google.com
    host = uri.Host; // www.google.com, without protocol or port
}

答案 2 :(得分:0)

为什么不使用Uri课呢?

var url = new Uri("http://www.google.com/?filter=xpto");
var domain = url.Host;
Console.WriteLine(domain);