如何提取"消息"部分来自Google API错误消息

时间:2014-12-31 05:30:25

标签: c# google-api

我需要格式化从Google返回的异常消息,并以最好的方式呈现给最终用户。 (使用C#)

例外格式:(在这种情况下,我正在调用Admin SDK。)

  

Google.Apis.Requests.RequestError.Entity已存在。 [409]。   错误[。       消息[实体已存在。]       地点 [ - ]       原因[重复]       域[全球]。]

另一个错误,

  

已达到Google.Apis.Requests.RequestError.Domain用户限制。 [412]。   错误[。        消息[已达到域用户限制。]        位置[If-Match - 标题]        原因[limitExceeded]        域[全球]。]

如何提取"消息"从上面的错误消息? ("实体已经存在。"或"达到域用户限制。"在上面的例子中)

2 个答案:

答案 0 :(得分:1)

这是Regix的工作。以下应该做你需要的:

        string message1 = "Google.Apis.Requests.RequestError.Entity already exists. "
                          +"[409]. Errors [. Message[Entity already exists.] Location [ - ] Reason [duplicate] Domain [global] .]";
        string message2 = "Google.Apis.Requests.RequestError.Domain user limit reached. "
                          +"[412]. Errors [. Message[Domain user limit reached.] Location [If-Match - header] Reason[limitExceeded] Domain[global] .]";

        string pattern = @"Message\[((\w+\s){2,}(\w+\s?)*)\.\]";

        Regex regex = new Regex(pattern);

        Match m = regex.Match(message1); //or regex.Match(message2)
        if (m.Success)
        {
            Group g = m.Groups[1]; //m.Groups[0] will Match 'Message[.....]'
            CaptureCollection cc = g.Captures;

            for (int i = 0; i < cc.Count; i++)
            {
                Capture c = cc[i];
                Console.WriteLine("Message: {0}", c);
            }
        }

        Console.ReadLine();

答案 1 :(得分:1)

试试这个模式。

  

string pattern = @“消息[([A-Za-z0-9- \ s *] +)] *”;