我需要格式化从Google返回的异常消息,并以很好的方式将它们呈现给最终用户。(使用 C#)
异常格式:(在本例中,我调用的是管理员 SDK。
Google.Apis.Requests.RequestError.Entity已经存在。 [409]. 错误 [. 消息[实体已存在。 位置 [ - ] 原因 [重复] 域 [全局] .
另一个错误,
已达到Google.Apis.Requests.RequestError.domain用户限制。 [412]. 错误 [. 邮件[已达到域用户限制。 位置 [如果匹配 - 标题] 原因[超出限制] 域[全局] .
如何从上述错误消息中提取"消息"?(在上面的示例中,"实体已存在"或"已达到域用户限制")
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();
试试这个模式。
字符串模式 = @"消息[([A-Za-z0-9-\s*]+)]*";