http://
文字列のリストが与えられたとき、どれが有効なURLであるかを調べることに興味があります。私の最初のアプローチは、正規表現を使用して次のようにすることです。
var urls = strs.Where(str => urlRegex.matches(str));
もっと慣用的/自然/簡単な方法はありますか?
http://
文字列のリストが与えられたとき、どれが有効なURLであるかを調べることに興味があります。私の最初のアプローチは、正規表現を使用して次のようにすることです。
var urls = strs.Where(str => urlRegex.matches(str));
もっと慣用的/自然/簡単な方法はありますか?
はい、 Uri.TryCreateを使用し、正常に解析された URI の Scheme プロパティをテストして、それが HTTP であることを確認します。
ただし、探していた URI がより大きなテキスト ブロックの部分文字列である場合は、正規表現を使用することをお勧めします。
私は正規表現ベースのアプローチに行きますが、あなたのアプローチは私にはうまく見えます
System.Uri クラスに組み込まれている解析を使用して、Url を検証できます。これには、Url に含まれるクエリ文字列を正しく処理できるという利点があり、.Net が Url として使用できる任意の文字列を解析できるはずです。
TryCreate を使用して各文字列の解析を試みた後、Uti.Scheme プロパティが HTTP uri であることを確認します (そうでない場合、ファイルシステム パスもフィルターを通過します)。