4

ランダムな URL のリストがあるとします。URL は完全にフォーマットされています。

http://www.example1.com, 
http://example2.biz, 
http://www.example3.co.uk

そして、テキストボックスからのMy url値と、urlSufixのdropDownListがあります

ユーザーはURLを挿入しています:

ラベル: www. 、テキストボックス[insert the domainNameOnly]、DDL[.com, .biz, .co.uk, .net, .info]

ユーザーが「example3」と入力し、サフィックス「.biz」を選択したとします

だから私の価値は"example3.biz"

リスト内の URL をユーザー入力と比較する方法が必要です

文字列を分割するだけだと思っていました('.')

オプションはプレフィックス用です:

www.example

あるいは単に

example

接尾辞

example.com \ biz \net \info ->  (2 parts)
example.co.uk \org.uk (3 parts) 

たくさんのオプションがあります

配列が 2 つの要素を持つプレフィックスである可能性があります

www.example

そして 3 のサフィックス example.co.uk

このようにチェックするのは複雑です。

URL をドットで分割するための比較手法で間違ったパスを選択したのでしょうか?

私がどのように始めたかをお見せします。

これはまだすべてのオプションをカバーしているわけではなく、すでに複雑すぎます

if (ListArr[0] != "www")
{ // it means no www so

      compare userArr[0] to ListArr[0] // to check domainMatch

      // and for suffix of domain 
      var DDLValueArr = DDLValue.split('.');
      if(DDLValueArr.length > 1) means it is co.uk or org.uk etc'
      {
             compare DDLValueArr[0] to ListArr[1]   
      }
}

else 
compare userArr[0] to ListArr[1] cause the url in the List starts with "www"

ユーザー入力を URL リストと比較する良い方法は何ですか?

4

1 に答える 1

2

Uriクラスとを使用UriBuilderして uri を作成できます。次に例を示します。

List<Uri> uris = new List<Uri>(){ 
   new Uri("http://www.example1.com"), 
   new Uri("https://www.example2.biz"), 
   new Uri("http://www.example3.co.uk")
};

string input = "www.example2.biz";
Uri newUri = new UriBuilder(input).Uri;
if (uris.Any(u=> u.Host == newUri.Host))
{
    MessageBox.Show("Already in the list");
}

uri がスキームを指定しない場合、UriBuilderデフォルトは「http:」になることに注意してください。

于 2013-06-29T11:23:05.757 に答える