2013-08-21 107 views
1

我想通过使用正则表达式或可能从LDAP字符串可用的现有字符串方法获取域名和其余信息到2个字符串的最佳方式。分离ldap连接字符串的最佳方法是什么?

这里是Active Directory连接字符串:

"LDAP://yourdomain.com/OU=Bla,OU=Bla2,OU=Bla3,DC=yourdomain,DC=com" 

和出来把我想得是:

string DomainName = "yourdomain.com" 
string Container = "OU=Bla,OU=Bla2,OU=Bla3,DC=yourdomain,DC=com" 

回答

4

这是一个标准的URL(与协议LDAP),我会用appropriate URL parsing/objects可供您使用。

var uri = new Uri(LDAPConnectionString); 
var host = uri.Host; 
var Container = uri.Segments[1]; 

+0

我实际上并不认为'URI'类会解析路径的另一端,因为它不是标准的URL。但是,我测试了'uri.Segments [1]'会给你第二部分。 – James

+0

这似乎是一个正确的方式做到这一点,但我并没有完全得到它。你能多给点解释一下吗?所以LDAP字符串位于web.config文件中。我把它放到代码中,并将它分成两部分,分别是domainname和其他部分。谢谢 – akd

+0

它*是一个URL。你习惯于像http://这样的URL,但URL规范是独立于协议的 –

2

这可以通过使用简单的字符串操作(无需使用正则表达式)来完成。

var parts = "LDAP://yourdomain.com/OU=Bla,OU=Bla2,OU=Bla3,DC=yourdomain,DC=com".Replace("LDAP://", "").Split('/'); 
Console.WriteLine(parts[0]); // yourdomain.com 
Console.WriteLine(parts[1]); // OU=Bla,OU=Bla2,OU=Bla3,DC=yourdomain,DC=com 
+0

如果某个容器名称包含一个斜杠。使用'.Split(new Char [] {'/'},2)'代替,参见[String.Split](http://msdn.microsoft.com/en-us/library/c1bs0eda%28v=vs.110 %29.aspx) –

相关问题