说我有一个随机网址列表,网址是完全格式化的:

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

我有来自文本框的我的 url 值和 urlSufix 的 dropDownList

所以用户正在插入一个网址:

标签: www. 、 textBox [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)

所以有很多选择

可能是 aray 的前缀有 2 个元素
www.example

后缀为 3 example.co.uk

以这种方式检查它很复杂,

我是否使用比较技术选择了错误的路径来按点分割网址?

我会告诉你我是如何开始的,一旦我注意到它太多了,我就停下来了

这仍然没有涵盖所有选项和 它已经太复杂了
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 列表进行比较的好方法是什么?

最佳答案

您可以使用 Uri class 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:”。

关于c# - 如何字符串操作和解析 url,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17379452/

10-16 12:24
查看更多