例如,字符串包含以下内容(字符串是可变的):
http://www.google.comhttp://www.google.com
这里删除重复网址的最有效方法是什么 - 例如输出将是:
http://www.google.com
答案 0 :(得分:2)
我假设输入只包含网址。
string input = "http://www.google.comhttp://www.google.com";
// this will get you distinct URLs but without "http://" at the beginning
IEnumerable<string> distinctAddresses = input
.Split(new[] {"http://"}, StringSplitOptions.RemoveEmptyEntries)
.Distinct();
StringBuilder output = new StringBuilder();
foreach (string distinctAddress in distinctAddresses)
{
// when building the output, insert "http://" before each address so
// that it resembles the original
output.Append("http://");
output.Append(distinctAddress);
}
Console.WriteLine(output);
答案 1 :(得分:1)
将字符串收集到列表中并使用distinct,如果您的字符串包含http地址,则可以使用http:.+?(?=((http:)|($))
RegexOptions.SingleLine
var distinctList = list.Distinct(StringComparer.CurrentCultureIgnoreCase).ToList();
答案 2 :(得分:1)
效率有各种定义:代码大小,总执行时间,CPU使用率,空间使用,编写代码的时间等。如果你想要“高效”,你应该知道你正在尝试哪一个
我会做这样的事情:
string url = "http://www.google.comhttp://www.google.com";
if (url.Length % 2 == 0)
{
string secondHalf = url.Substring(url.Length / 2);
if (url.StartsWith(secondHalf))
{
url = secondHalf;
}
}
根据您需要删除的重复项的种类,这可能适用于您,也可能不适用。
答案 3 :(得分:0)
鉴于你不知道字符串的长度,你不知道某事是否是双重的,你不知道什么是双重的:
string yourprimarystring = "http://www.google.comhttp://www.google.com";
int firstCharacter;
string temp;
for(int i = 0; i <= yourprimarystring.length; i++)
{
for(int j = 0; j <= yourprimarystring.length; j++)
{
string search = yourprimarystring.substring(i,j);
firstCharacter = yourprimaryString.IndexOf(search);
if(firstCharacter != -1)
{
temp = yourprimarystring.substring(0,firstCharacter) + yourprimarystring.substring(firstCharacter + j - i,yourprimarystring.length)
yourprimarystring = temp;
}
}
通过所有元素,从头到尾全部取出并按照以下方式搜索它们:
ABCDA - 搜索A发现A排除A,这就是问题,你需要指定复制需要多长时间,如果你想让它变量,但也许我的代码可以帮助你。