0

RESTクエリ文字列である文字列があり、次のようになります

//new_requestSet?$select=new_ExternalStatus,new_name&$filter=new_ExternalStatusDirty eq true

StackOverFlowに投稿され正規表現クラスを使用しています。上記の入力文字列でいくつかの位置を見つけることはうまくいきますが、必要な実際の値を抽出するためのコードは非効率的だと感じています。IndexOfとSubStringの代わりに正規表現を使用するより効率的な方法はありますか?

int fieldPos = StringExtender.NthIndexOf(json, "filter=", 1);
            int firstSpace = StringExtender.NthIndexOf(json, " ", 1);
            int secondSpace = StringExtender.NthIndexOf(json, " ", 2);
            int entityPosEnd = StringExtender.NthIndexOf(json, @"\Set", 1);
            int searchFieldStart = StringExtender.NthIndexOf(json, "=", 2);
            string searchField = json.Substring(searchFieldStart + 1, firstSpace - searchFieldStart - 1);
            string criteria = json.Substring(secondSpace+1);
            string entity = json.Substring(0, entityPosEnd);
4

2 に答える 2

0

最初に「&」で文字列を吐き出し、パラメータ名/値のペアを受け取ります
。次に、「=」で2回目に分割し、パラメータ名/値の個別の値を受け取ります。

作成する必要のあるコードはもう少しありますが、正規表現はまったくありません。

于 2012-09-15T00:31:41.573 に答える
0

キャプチャグループが役立つはずです。http://msdn.microsoft.com/en-us/library/az24scfc.aspx#grouping_constructs

    var regex = new Regex(@"(?<name>[^=?&]+)=(?<value>[^&]+)");
    var results = regex.Matches(request);

    foreach (Match result in results)
    {
        Console.WriteLine("name: {0} - value: {1}", result.Groups["name"].Value, result.Groups["value"].Value);
    }
于 2012-09-14T23:56:20.567 に答える