スキーマのないURLからURLのドメイン名、ホスト名を取得する

スキーマのないURLからURLのドメイン名、ホスト名を取得するコードを紹介します。

概要

以下の記事ではURLからホスト名やドメイン名を取得するコードを紹介しました。


この記事では、スキーマのないURLの文字列からホスト名やドメイン名を取得するコードを紹介します。

スキーマのないURL文字列

スキーマのないURL文字列は以下の形式の文字列を想定します。

例1
www.ipentec.com/data/product.json
例2
ipentec.jp/xml/feed.xml

実装方針

いくつかの実装方法がありますが、文字列の先頭に仮のスキーマ文字列を追加してURLとして処理する方法を採用します。

プログラム

UI

下図のフォームを作成します。テキストボックスを2つ、ボタンを2つ配置します。
スキーマのないURLからURLのドメイン名、ホスト名を取得する:画像1

コード

以下のコードを記述します。

using System.Text.RegularExpressions;

namespace GetUrlElementNoScheme
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      string URLStr = "https://"+textBox1.Text;

      Uri url = new Uri(URLStr);

      string Host = url.Host;
      textBox2.Text += Host;
    }

    private void button2_Click(object sender, EventArgs e)
    {
      string URLStr = "https://"+textBox1.Text;

      Uri url = new Uri(URLStr);

      string Host = url.Host;
      Match match = Regex.Match(Host, @"[^\.]+\.[^\.]+$");
      textBox2.Text += match.Value;
    }
  }
}

解説

今回のプログラムでは、入力文字列の先頭に "https://" を追加しURL文字列としてUriオブジェクトのコンストラクタに与えます。

  string URLStr = "https://"+textBox1.Text;

  Uri url = new Uri(URLStr);


Uriオブジェクトからホスト名、ドメイン名を取得するコードの詳細は以下の記事で紹介している方法と同様です。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。
スキーマのないURLからURLのドメイン名、ホスト名を取得する:画像2

スキーマのないURL文字列"www.ipentec.com/data/product.json"を入力します。
スキーマのないURLからURLのドメイン名、ホスト名を取得する:画像3

[HostName]ボタンをクリックします。URL文字列からホスト名が取得できます。
スキーマのないURLからURLのドメイン名、ホスト名を取得する:画像4

[DomainName]ボタンをクリックします。ドメイン名が取得できます。
スキーマのないURLからURLのドメイン名、ホスト名を取得する:画像5

入力の文字列を"ipentec.jp/xml/feed.xml"に変更して動作確認します。ホスト名、ドメイン名が取得できます。
スキーマのないURLからURLのドメイン名、ホスト名を取得する:画像6
スキーマのないURLからURLのドメイン名、ホスト名を取得する:画像7

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2023-12-27
Copyright © 1995–2025 iPentec all rights reserverd.