在C#中,我试图使用正则表达式来替换查询字符串中的值。所以,如果我有:
http://www.url.com/page.aspx?id=1
我想写一个函数,我传入url,querystring值和要替换的值。有点像:
string url = "http://www.url.com/page.aspx?id=1";
string newURL = ReplaceQueryStringValue(url, "id", "2");
private string ReplaceQueryStringValue(string url, string replaceWhat, string replaceWith)
{
return Regex.Replace(url, "[^?]+(?:\?"+replaceWhat+"=([^&]+).*)?",replaceWith);
}
答案 0 :(得分:10)
这是一个可以完成工作的功能:
static string replace(string url, string key, string value)
{
return Regex.Replace(
url,
@"([?&]" + key + ")=[^?&]+",
"$1=" + value);
}
答案 1 :(得分:2)
使用String.Split可能更容易将URL初始剪切为页面和查询字符串部分,然后再次使用Split.String将查询字符串剪切成不同的部分。
var urlSplit = url.Split('?');
var originalURL = urlSplit[0];
var urlRedefined = url;
if(urlSplit.Length == 2)
{
var queryString = urlSplit[1].Split('&');
//your code here
var urlRedefined = String.Format("{0}?{1}",
originalURL,
String.Join("&", queryString);
}
正则表达式可能对您的需求有些过分。此外,System.Uri
类可能更适合。其用途包含在URL split in C#?中。