从LDAP错误消息中提取数据值

本文关键字:提取 数据 消息 LDAP 错误 | 更新日期: 2023-09-27 18:01:20

我有一个例外类型DirectoryServicesCOMException,我需要从它的ExtendedErrorMessage属性中提取数据值。

下面是ExtendedErrorMessage属性的一个示例测试:

8009030C: LdapErr: DSID-0C0904DC, comment: AcceptSecurityContext error, data 701, v1db1

我需要701从字符串。

仅供参考,我从SO找到了这些消息:https://stackoverflow.com/a/15024909/481656

我通过使用LastIndexOf '数据'和下一个','后LastIndexOf '数据'组合成功,但寻找一个更干净的解决方案。

谢谢。

从LDAP错误消息中提取数据值

如果您想要的结果总是在最后一个逗号之前,并且它只是数字,您可以使用String.Split(Char[], StringSplitOptions)重载StringSplitOptions枚举和Regex.Match(string, string)方法,如;

string s = "8009030C: LdapErr: DSID-0C0904DC, comment: AcceptSecurityContext error, data 701, v1db1";
string[] array = s.Split(new []{','},
                         StringSplitOptions.RemoveEmptyEntries); 
string s1 = array[array.Length - 2]; // This will be " data 701"
string finalstring = Regex.Match(s1, @"'d+").Value; // 'd+ is for only integer numbers
Console.WriteLine(finalstring); // Prints 701

这里a demonstration