スキーマのないURLからURLのドメイン名、ホスト名を取得するコードを紹介します。
以下の記事ではURLからホスト名やドメイン名を取得するコードを紹介しました。
この記事では、スキーマのないURLの文字列からホスト名やドメイン名を取得するコードを紹介します。
スキーマのないURL文字列は以下の形式の文字列を想定します。
いくつかの実装方法がありますが、文字列の先頭に仮のスキーマ文字列を追加してURLとして処理する方法を採用します。
下図のフォームを作成します。テキストボックスを2つ、ボタンを2つ配置します。
以下のコードを記述します。
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文字列"www.ipentec.com/data/product.json"を入力します。
[HostName]ボタンをクリックします。URL文字列からホスト名が取得できます。
[DomainName]ボタンをクリックします。ドメイン名が取得できます。
入力の文字列を"ipentec.jp/xml/feed.xml"に変更して動作確認します。ホスト名、ドメイン名が取得できます。