必要に応じてURLにスキームを追加する 質問する

必要に応じてURLにスキームを追加する 質問する

文字列から 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 操作は別として?

エレガントで速いものはありますか?

ベストアンサー1

また、UriBuilder:

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

MSDN からのコメント:

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

uri でスキームが指定されていない場合、スキームはデフォルトで「http:」になります。

おすすめ記事