2011-09-04 90 views
0

我有一個網址像本地主機:8001 /頁=類別& CATID = 4 & P = 1888年&國家= 1,2,3,6,我想刪除& p = 1888部分正則表達式。我怎麼能匹配&排除這部分與asp.net c#?正則表達式匹配和刪除參數URL

編輯: 這裏是我的解決方案創建的功能:

public string RemoveUrlParameters(HttpContext Context, string[] Parameters) 
{ 
    string result = String.Empty; 

    UriBuilder urlBuilder = new UriBuilder(Context.Request.Url.AbsoluteUri); 
    var values = HttpUtility.ParseQueryString(urlBuilder.Query); 

    for (int i = 0; i < Parameters.Length; i++) 
     values.Remove(Parameters[i]); 

    urlBuilder.Query = values.ToString(); 
    result = urlBuilder.ToString(); 
    result = Context.Server.UrlDecode(
    result.Replace("http://" + Context.Request.Url.Authority, String.Empty) 
    .Replace(":80", String.Empty).Replace("default.aspx", String.Empty)); 

    return result; 
} 

回答

9

我想用正則表達式除去& P = 1888年部分

我會建議你要使用url解析器,以避免你的代碼的脆弱性,並保證它可以適用於任何有效的url,因爲它們尊重RFC:

var url = "http://localhost:8001/?page=categories&catid=4&p=1888&country=1,2,3,6"; 
var urlBuilder = new UriBuilder(url); 
var values = HttpUtility.ParseQueryString(urlBuilder.Query); 
values.Remove("p"); 
urlBuilder.Query = values.ToString(); 
var newUrl = urlBuilder.ToString(); 

使用Regex實現一個有效的URL解析器可能是相當具有挑戰性的,不值得,尤其是當.NET框架已經爲您提供了操縱url的工具時。

0
Regex.Replace(input, @"&p=1888(?=&|$)", string.Empty)