1. ホーム
  2. c#

必要に応じてURLにスキームを追加

2023-09-08 17:16:45

質問

文字列からUriを作成するには、次のようにします。

Uri u = new Uri("example.com");

しかし、問題は(上記のような)文字列がプロトコルを含んでいない場合、例外が発生します: " Invalid URI: The format of the URI could not be determined. という例外が発生します。

例外を回避するためには、以下のように文字列をプロトコルで保護する必要があります。

Uri u = new Uri("http://example.com");

しかし、urlを入力とした場合、プロトコルが欠落していたらどのように追加するのでしょうか?

つまり、いくつかのIndexOf/Substring操作は別として?

何かエレガントで高速なもの?

どのように解決するのですか?

また UriBuilder :

public static Uri GetUri(this string s)
{
    return new UriBuilder(s).Uri;
}

MSDNからの備考。

このコンストラクタは、UriBuilder クラスの新しいインスタンスを、uri で指定されたように Fragment, Host, Path, Port, Query, Scheme, および Uri プロパティを設定した状態で初期化します。

uri がスキームを指定しない場合、スキームのデフォルトは "http:" になります。