2013-08-21 108 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) –

相關問題