我需要格式化从Google返回的异常消息,并以最好的方式呈现给最终用户。 (使用C#)
例外格式:(在这种情况下,我正在调用Admin SDK。)
Google.Apis.Requests.RequestError.Entity已存在。 [409]。 错误[。 消息[实体已存在。] 地点 [ - ] 原因[重复] 域[全球]。]
另一个错误,
已达到Google.Apis.Requests.RequestError.Domain用户限制。 [412]。 错误[。 消息[已达到域用户限制。] 位置[If-Match - 标题] 原因[limitExceeded] 域[全球]。]
如何提取"消息"从上面的错误消息? ("实体已经存在。"或"达到域用户限制。"在上面的例子中)
答案 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 *] +)] *”;