更改字符串.子字符串

本文关键字:字符串 | 更新日期: 2023-09-27 18:23:57

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

有没有更简单的方法可以做到这一点,而不必覆盖子字符串方法?

更改字符串.子字符串

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

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

用法:

string domain = url.GetDomain();

如果使用 Uri s,也不应使用字符串方法。由于您的 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
}

为什么不使用 Uri 类呢?

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