Soo*_*ead 0 c# regex asp.net url-parameters
我对正则表达式并不擅长,而且我无法找到适用的解决方案,所以在经过大量搜索之后,我仍然无法确定这一点.
我有一个带有可选page = 123参数的URL.url中也可以有其他可选的get参数,这些参数可以在page参数之前或之后发生.
我需要将该参数替换为page = - PLACEHOLDER--以便能够将其与我的分页功能一起使用.
如果页面参数没有出现在url中,我想按照之前描述的方式添加它.
我正在尝试为字符串编写一个扩展方法,但静态函数也同样好.
一点点的解释也会受到赞赏,因为它会给我一个很好的正则表达式的教训,并希望下次我不必问.
我也使用asp.net mvc-3但是出于兼容性原因,在mvc-s路由之前会发生复杂的重写,而我无法访问它.所以请不要建议我使用mvc-s路由,因为我不能.
我建议跳过正则表达式并使用另一种方法:
HttpValueCollection使用查询字符串构建一个HttpUtility.ParseQueryString.ToString()集合,你会得到一个新的查询字符串.就像是:
public static string SetPageParameter(this string url, int pageNumber)
{
var queryStartIndex = url.IndexOf("?") + 1;
if (queryStartIndex == 0)
{
return string.Format("{0}?page={1}", url, pageNumber);
}
var oldQueryString = url.Substring(queryStartIndex);
var queryParameters = HttpUtility.ParseQueryString(oldQueryString);
queryParameters["page"] = pageNumber;
return url.Substring(0, queryStartIndex) + queryParameters.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我没有证实这个编译,但它应该给你一个想法.
| 归档时间: |
|
| 查看次数: |
1083 次 |
| 最近记录: |