Skip to main content
 首页 » 编程设计

C# 删除空 url 参数正则表达式

2024年02月04日32xing901022

我正在尝试使用 C# 从字符串中删除空的 url 类型参数。我的代码示例在这里。

    public static string test () 
    { 
        string parameters = "one=aa&two=&three=aaa&four="; 
        string pattern = "&[a-zA-Z][a-zA-Z]*=&"; 
        string replacement = ""; 
        Regex rgx = new Regex(pattern); 
        string result = rgx.Replace(parameters, replacement); 
 
        return parameters; 
    } 
 
    public static void Main(string[] args) 
    { 
        Console.WriteLine(test()); 
    } 

我尝试了 rextester 中的代码

输出:one=aa&two=&three=aaa&four=

预期输出:one=aa&three=aaa

请您参考如下方法:

你绝对不需要为此推出自己的正则表达式,尝试使用 HttpUtility.ParseQueryString() :

public static string RemoveEmptyUrlParameters(string input) 
{ 
    var results = HttpUtility.ParseQueryString(input); 
 
    Dictionary<string, string> nonEmpty = new Dictionary<string, string>(); 
    foreach(var k in results.AllKeys) 
    { 
        if(!string.IsNullOrWhiteSpace(results[k])) 
        { 
            nonEmpty.Add(k, results[k]); 
        } 
    } 
 
    return string.Join("&", nonEmpty.Select(kvp => $"{kvp.Key}={kvp.Value}")); 
} 

fiddle here