0

私は現在、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

これらのパラメータは、文字列内で毎回異なる順序で来る可能性があるため、現在使用している正規表現が機能しないことは明らかです。私はそれを調べて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

ここでも正規表現を使用できます。別のキャプチャ グループを追加してプロパティ名をキャプチャし、Match ではなく Matches を使用してすべての結果をループするか、Match を複数回呼び出すことを検討してください。

于 2012-08-16T10:38:22.413 に答える