我有这个字符串,我使用了Substring,但它不是我想要的。 我想删除从索引39开始的字符串中的部分。 然后从另一个索引中删除另一个部分。 并最终重建字符串。
string test = "http://test.com/attachment.php?s=21c4a95ffd0c8110e18a44ace2468fb3&attachmentid=85411&d=1432094822";
test = test.Substring(39);
最后字符串应如下所示:
http://test.com/attachment.php?attachmentid=85411&d=1432094822
答案 0 :(得分:4)
您应该使用System.Uri
来解析网址,而不是更安全。
var uri = new System.Uri(HttpUtility.HtmlDecode("http://test.com/attachment.php?s=21c4a95ffd0c8110e18a44ace2468fb3&attachmentid=85411&d=1432094822"));
var leftPart = uri.GetLeftPart(UriPartial.Path);
var queryStringParts = HttpUtility.ParseQueryString(uri.Query);
var uriBuilder = new UriBuilder(leftPart);
uriBuilder.Query = string.Format("attachmentid={0}&d={1}",
HttpUtility.UrlEncode(queryStringParts.Get("attachmentid")),
HttpUtility.UrlEncode(queryStringParts.Get("d")));
var result = uriBuilder.ToString();
答案 1 :(得分:3)
以下是Daniel的类似方法:
string finalurl = null;
string url = "http://test.com/attachment.php?s=21c4a95ffd0c8110e18a44ace2468fb3&attachmentid=85411&d=1432094822";
Uri uri;
if(Uri.TryCreate(url, UriKind.Absolute, out uri))
{
var queryString = url.Substring(url.IndexOf('?')).Split('#')[0];
string decoded = System.Web.HttpUtility.HtmlDecode(queryString);
var nameVals = System.Web.HttpUtility.ParseQueryString(decoded);
nameVals.Remove("s"); // remove your undesired parameter
finalurl = String.Format("{0}{1}{2}{3}?{4}"
, uri.Scheme, Uri.SchemeDelimiter, uri.Authority, uri.AbsolutePath
, nameVals.ToString());
}
您需要添加对System.Web.dll
的引用。