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

标签 c# regex

我正在尝试使用 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

关于C# 删除空 url 参数正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48445767/

相关文章:

c# - C# 中 C++ 结构化绑定(bind)的模拟

c# - 混合 Razor 和 Javascript 代码

python - 将命令行参数转换为正则表达式

c# - 如何匹配这个字符串使用正则表达式?

regex - 如何重新加入文本文件中用连字符跨行分割的单词

Python 在字符串开头匹配 '.\'

JAVA-从txt文件中读取整数并计算整数

c# - 在新的 c# 6 "?"空检查的情况下调用而不是 callvirt

c# - 将 IN 运算符与存储过程参数一起使用

c# - 捕获 USB 插拔事件 System.InvalidCastException