Come rimuovere una stringa di query per chiave da un URL?Come rimuovere in modo efficiente una stringa di query per chiave da un URL?
Ho il metodo seguente che funziona bene ma mi chiedo solo se esiste un modo migliore/più breve? o un metodo .NET integrato che può farlo in modo più efficiente?
public static string RemoveQueryStringByKey(string url, string key)
{
var indexOfQuestionMark = url.IndexOf("?");
if (indexOfQuestionMark == -1)
{
return url;
}
var result = url.Substring(0, indexOfQuestionMark);
var queryStrings = url.Substring(indexOfQuestionMark + 1);
var queryStringParts = queryStrings.Split(new [] {'&'});
var isFirstAdded = false;
for (int index = 0; index <queryStringParts.Length; index++)
{
var keyValue = queryStringParts[index].Split(new char[] { '=' });
if (keyValue[0] == key)
{
continue;
}
if (!isFirstAdded)
{
result += "?";
isFirstAdded = true;
}
else
{
result += "&";
}
result += queryStringParts[index];
}
return result;
}
Per esempio posso chiamare le cose come:
Console.WriteLine(RemoveQueryStringByKey(@"http://www.domain.com/uk_pa/PostDetail.aspx?hello=hi&xpid=4578", "xpid"));
auguriamo che la questione è chiara.
Grazie,
possibile duplicato di [URL Querystring - Trova, sostituire, aggiungere, aggiornare i valori?] (http://stackoverflow.com/questions/1163956/url-querystring-find-replace-add-update-values) –
Tag: 'reinventing-the-wheel' ['System.Web.HttpUtility.ParseQueryString'] –
non ha la soluzione completa né risponde alla domanda posta. –