как получить одну часть строки - PullRequest
1 голос
/ 30 апреля 2011

У меня есть строка, например.

string a =  "OU=QALevel1,DC=CopTest,DC=copiun2,DC=com";

Теперь я хочу, чтобы моя временная строка имела значение

 tempString = "DC=CopTest,DC=copiun2,DC=com"

Мне нужно удалить все вхождения пар OUиз струн.Эти всегда появляются первыми в строке.

Ответы [ 5 ]

4 голосов
/ 30 апреля 2011

Ну, это зависит от того, какие основания вы хотите, чтобы это было так. Если вы хотите все после первой запятой, вы можете использовать:

int comma = a.IndexOf(',');
if (comma != -1)
{
    string tempString = a.Substring(comma + 1);
    // Use tempString
}
else
{
    // Deal with there not being any commas
}

Если вы не хотите разбивать строку, пожалуйста, дайте больше информации о том, что вам нужно сделать.

РЕДАКТИРОВАТЬ: Если вам нужна «первая запятая, за которой следует DC =», вы можете изменить первую строку на:

int comma = a.IndexOf(",DC=");

Опять же, если вам нужно что-то еще, пожалуйста, будьте намного более конкретно о том, что вы пытаетесь сделать.

3 голосов
/ 30 апреля 2011

Вы можете использовать LINQ, чтобы помочь:

string foo = "OU=SupportSubLevel3,OU=SupportLevel1,DC=CopTest,DC=copiun2,DC=com";

string sub = string.Join(",", 
                         foo.Split(',')
                            .Where(x => x.StartsWith("DC")));
Console.WriteLine(sub);
  • разбить строку на массив, запятую
  • берите только те, которые начинаются с DC
  • положить обратно в строку, разделив их запятой
1 голос
/ 01 мая 2011

Я подозреваю, что здесь вам действительно нужны все компоненты домена.Вы можете даже хотеть разделить их.Этот пример будет поддерживать любой синтаксис DN и извлекать из него DC:

string a = "OU=QALevel1,DC=CopTest,DC=copiun2,DC=com";

// Separate to parts
string[] parts = a.Split(',');

// Select the relevant parts
IEnumerable<string> dcs = parts.Where(part => part.StartsWith("DC="));

// Join them again
string result = string.Join(",", dcs);

Обратите внимание, что вы получаете и dcs - перечисление всех частей DC, и result - запрошенную вами строку,Но самое главное, этот код имеет смысл - когда вы его видите, вы точно знаете, что он будет делать - возвращать строку со списком всех DC=* частей исходной строки, удаляя любыеЧасти постоянного тока.

0 голосов
/ 30 апреля 2011

Предполагая, что OU всегда перед остальными парами значений, вы получите всю строку, следующую за последним значением OU:

string a =  "OU=QALevel1,DC=CopTest,DC=copiun2,DC=com";
string res = a.Substring(a.IndexOf(',', a.LastIndexOf("OU=")) + 1);

// res = "DC=CopTest,DC=copiun2,DC=com"
0 голосов
/ 30 апреля 2011

Для этого вам нужно будет использовать функцию Substring, но то, как вы ее используете, зависит от ваших критериев.Например, вы могли бы просто сделать это:

tempString = a.Substring(12);

Если бы вы могли сообщить нам, что ваши критерии были бы очень полезны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...