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

时间:2014-05-01 08:35:40

标签: c# regex

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

以下是ExtendedErrorMessage属性的示例测试:

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

我需要字符串中的701

仅供参考,我在SO:https://stackoverflow.com/a/15024909/481656

中找到了这些消息

我通过使用LastIndexOf'数据'取得了成功。和下一个','在LastIndexOf'数据'之后组合但寻找更清洁的解决方案。

感谢。

1 个答案:

答案 0 :(得分:1)

如果您想要的结果始终位于最后一个逗号之前且只是数字,则可以String.Split(Char[], StringSplitOptions) overload使用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

这里有 demonstration