2013-08-21 2 views
1

Я пытаюсь найти лучший способ получить доменное имя и остальную информацию в 2 строки, используя регулярное выражение или, возможно, метод String, доступный из строки LDAP.Каков наилучший способ разделения строки подключения ldap?

Вот активная строка подключения каталога:

"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. Я забираю его в код и разделяю его на 2 части как имя домена, а остальное. Спасибо – akd

+0

Это * есть * URL. Вы привыкли к URL-адресам, таким как http: // ..., но спецификация URL не зависит от протокола. –

2

Это можно сделать с помощью простой строки манипуляции (нет необходимости в Regex).

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 (новый Char [] {'/'}, 2)' вместо этого, см. [String.Split] (http://msdn.microsoft.com/en-us/library/c1bs0eda%28v=vs.110 % 29.aspx) –