3

私が取り組んでいるアプリケーションでは、ユーザーがドメイン名のリストを入力できるようにしています。ユーザーは、次の形式のいずれかでドメイン名を入力する必要があります。

ただし、このドメイン名をデータベースに保存する場合は、ドメイン名を次の形式でのみ保存する必要があります。

フォーマット:stackoverflow.com

それで、私がこの仕事を成し遂げるために使うことができる既製のヘルパーがあるかどうか、またはこれを効率的な方法で行うための提案があるかどうか知りたいと思いました。

私は何を試しましたか?

これが私が思いついたものです、

public static string CleanDomainName(string domain)
{
    domain = domain.Trim();
    if (domain.Split('.').Count() > 2)
    {
        domain = domain.Split('.')[1] + "." + domain.Split('.')[2];
    }
    return domain;
}

これについて私を助けてください。

4

5 に答える 5

6

正規表現を使用して、文字列の先頭にある式を置き換えます。

Regex.Replace(input, @"^(?:http(?:s)?://)?(?:www(?:[0-9]+)?\.)?", string.Empty, RegexOptions.IgnoreCase);

これは以下を置き換えます:

  • 先頭に最終的な「http://」(または「https://」) が続きます。
  • 最終的な「www.」(また、次のような番号: www8 または www23)
于 2012-12-20T10:11:51.027 に答える
2

Uriクラスを使用します。

string url = "http://www.testsite.com/path/file.html";
Uri uri = new Uri(url);

URL のさまざまな部分を取得するさまざまなプロパティがあります。

uri.Host を使用しwww.testsite.comて URL の一部を取得します。ちょっとした文字列操作でwww.;を削除できます。

string domain = uri.Host;
if (domain.StartsWith("www."))
{
    domain = domain.Substring(4);
}
于 2012-12-20T09:48:40.337 に答える
1

System.Uriクラスを使用します。

 System.Uri uri = new Uri("http://stackoverflow.com/search?q=something");
 string uriWithoutScheme = uri.Host.Replace("www.","") + uri.PathAndQuery;

これにより、次のことが得られます。stackoverflow.com/search?q=something

于 2012-12-20T09:48:22.347 に答える
-1
public static string CleanDomainName(string url)
{
    var uri = url.Contains("http://") ? new Uri(url) : new Uri("http://" + url);
    var parts = uri.Host.Split('.');
    return string.Join(".", parts.Skip(parts.Length - 2));
}
于 2012-12-20T09:50:11.157 に答える
-2
/// <summary>
/// Clears the sub domains from a URL.
/// </summary>
/// <param name="url">The URL.</param>
/// <returns>String for a URL without any subdomains</returns>
private static string ClearUrlSubDomains(Uri url)
{
    var host = url.Host.ToLowerInvariant();
    if (host.LastIndexOf('.') != host.IndexOf('.'))
    {
        host = host.Remove(0, host.IndexOf('.') + 1); // Strip out the subdomain (i.e. remove en-gb or www etc)
    }
    return host;
}

ドメインから新しい Uri を作成して、次のように呼び出すことができます。

ClearUrlSubDomains(new Uri(domain))

これは、http://www.something.somethingelse.comのような URL には対応していませんが、同等の while コンストラクトを使用して変更することができます。

于 2012-12-20T09:51:13.907 に答える