0

我目前正在将参数传递给这样的SQL字符串 -

grid=0&

我正在使用 aRegEx来获得这样的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可能是一种选择,但不确定。

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

4

2 回答 2

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...
        }
于 2012-08-16T10:40:26.207 回答
1

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

于 2012-08-16T10:38:22.413 回答