RegEx的替代方案

时间:2012-08-16 10:32:10

标签: 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&hr=3&tb=0

这些参数每次都可以在字符串中以不同的顺序排列,因此我目前使用的RegEx显然不会工作。我已经调查过了,并认为Split可能是一个选项,但不确定。

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

2 个答案:

答案 0 :(得分:3)

如果你正在解析查询字符串并寻找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...
        }

答案 1 :(得分:1)

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