说我有一个随机网址列表,网址完全格式化:
http://www.example1.com,
http://example2.biz,
http://www.example3.co.uk
我有一个文本框中的My url值和urlSufix的dropDownList
所以用户正在插入一个网址:
标签:www. ,textBox [insert the domainNameOnly],DDL [.com,.biz,.co.uk,.net,.info]
并说用户键入“example3”并选择sufix“.biz”
所以我的价值是“example3.biz”
我需要一种方法来比较列表中的网址和用户输入
我以为我会分裂字符串(‘.’)
所以选择是
对于前缀:
www.example
要不就
example
为sufix
example.com \ biz \net \info -> (2 parts)
example.co.uk \org.uk (3 parts)
所以有很多选择
可能是aray的前缀有2个元素
www.example
并使用3 example.co.uk修复
以这种方式检查是很复杂的,
我用comparisson techniq选择错误的路径来分割Dots的网址吗?
我会告诉你我是如何开始的,一旦我注意到它太多就停止了
这不仅涵盖所有选项,而且已经太复杂了
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"
比较用户输入到网址列表的好方法是什么?
最佳答案 您可以使用
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:”.