我在 list(Of string) 中有一个包含 100,000 个 url 的列表,其中可以包含表单中的 url。
yahoo.com
http://yahoo.com
http://www.yahoo.com
我尝试过使用正则表达式和 Uri 类的组合,但这没有帮助,所以我转储了代码。我也尝试使用此代码,但它只会删除精确形式的重复项,因为它不是特定于域的。
list = new ArrayList<T>(new HashSet<T>(list))
如何过滤这些重复项并仅保留其中一个网址(如果它包含相同的名称,例如 yahoo)。
谢谢
[编辑]
请注意
所有 URL 都属于不同的域,但通常可能有重复,就像我上面给出的示例
另外,我正在使用 .net 2.0,所以我无法使用 linq
最佳答案
这对我有用
[TestMethod]
public void TestMethod1()
{
var sites = new List<string> {"yahoo.com", "http://yahoo.com", "http://www.yahoo.com"};
var result = sites.Select(
s =>
s.StartsWith("http://www.")
? s
: s.StartsWith("http://")
? "http://www." + s.Substring(7)
: "http://www." + s).Distinct();
Assert.AreEqual(1, result.Count());
}
关于c# - 从列表中过滤重复的 URL 域 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6440489/