C# RegEx的替代方案

C# RegEx的替代方案,c#,regex,C#,Regex,我当前正在向SQL字符串传递一个参数,如下所示- grid=0& 我使用一个RegEx来得到0值,如下所示- Match match = Regex.Match(input, @"grid=([A-Za-z0-9\-]+)\&$", RegexOptions.IgnoreCase); string grid = match.Groups[1].Value; 这很好用 然而,随着开发的进展,很明显,更多的参数将像这样添加到字符串中- grid=0&am

我当前正在向
SQL
字符串传递一个参数,如下所示-

grid=0&
我使用一个
RegEx
来得到
0
值,如下所示-

Match match = Regex.Match(input, @"grid=([A-Za-z0-9\-]+)\&$",
            RegexOptions.IgnoreCase);

string grid = match.Groups[1].Value;
这很好用

然而,随着开发的进展,很明显,更多的参数将像这样添加到字符串中-

grid=0&hr=3&tb=0
这些参数每次在字符串中的顺序可能不同,因此很明显,我当前使用的正则表达式不起作用。我已经研究过了,认为拆分可能是一种选择,但不确定


最好的方法是什么?如何将其应用于当前的问题?

这里仍然可以使用正则表达式。考虑添加另一个捕获组来捕获属性名称,然后使用匹配来匹配所有结果,而不是匹配,或者多次调用匹配。考虑添加另一个捕获组来捕获属性名称,然后使用匹配来匹配所有结果,而不是匹配,或者多次调用匹配。

如果解析查询字符串并寻找替代代码> ReXEX ,则有专门的类和方法,它返回参数集合:

        string s = "http://www.something.com?grid=0&hr=3&tb=0";
        Uri uri = new Uri(s);
        var result = HttpUtility.ParseQueryString(uri.Query);
您必须包括
System.Web
名称空间。 您可以使用每个参数的键访问其值:

        foreach (string key in result.Keys)
        {
            string value = result[key];
            // action...
        }

如果您正在解析查询字符串并寻找
Regex
的替代方法,则有一个专门的类和方法,它返回参数集合:

        string s = "http://www.something.com?grid=0&hr=3&tb=0";
        Uri uri = new Uri(s);
        var result = HttpUtility.ParseQueryString(uri.Query);
您必须包括
System.Web
名称空间。 您可以使用每个参数的键访问其值:

        foreach (string key in result.Keys)
        {
            string value = result[key];
            // action...
        }

您的路径是正确的,但这与第二个示例中的tb参数不匹配,因为它没有尾随&。此外,我还将使用命名组使其更加清晰
(?[A-Za-z0-9]+)=(?[A-Za-z0-9]+)
然后
匹配.groups[“name”]
匹配.groups[“value”]
您的路径是正确的,但这与第二个示例中的tb参数不匹配,因为它没有尾随的&。此外,我还将使用命名组使其更清晰
(?[A-Za-z0-9]+)=(?[A-Za-z0-9]+)
然后
匹配.groups[“name”]
匹配.groups[“value”]
好的,我已经实现了它,但是如何使用该值呢?就像在传递它们以决定何时使用它们一样?因为它们可能会发生变化……好吧,我已经实现了它,但是我如何使用该值呢?就像在传递它们以决定何时使用它们一样?因为他们可能会改变。。。