2016-10-07 5 views
-2

Как извлечь подстроку «Amy Java» из строки ниже в C#?Извлечь подстроку из строки

CN=Amy Java,OU=Singapore,OU=Users,DC=domain,DC=com 
+4

Вы пробовали что-нибудь ?, затем добавить в этом вопросе. –

+2

От внешнего облика; это строка LDAP. В этом случае вы можете получить доменное имя. – A3006

+0

Я получаю указанную выше строку в текстовом поле, и из этого мне нужно извлечь подстроку «Amy Java» –

ответ

1

это все, что вам нужно.

string result = str.Split(',')[0].Split('=')[1]; 
2

Это работает для меня:

var amyJavaText = 
    "CN=Amy Java,OU=Singapore,OU=Users,DC=domain,DC=com" 
     .Split(',') 
     .Select(x => x.Split('=')) 
     .ToLookup(x => x[0], x => x[1])["CN"] 
     .First(); 
+0

это немного перебор, но мне нравится, что вы искали ключ – Doruk

+0

Надеюсь, что имя не имеет каких-либо экранированных/цитируемых символов ',' или '=' в ... – Rawling

+0

@Rawling - Да, согласен. – Enigmativity

0

В дополнении к более общему образу, вы можете создать Dictionary (в случае уникальных значений в строках при условии) или Списке KeyValuePair (для текущего примера строки) следующим образом:

var str = "CN=Amy Java,OU=Singapore,OU=Users,DC=domain,DC=com"; 

var dict = str.Split(',').Select(s=> s.Split('=')).ToDictionary(a => a[0].Trim(), a => a[1].Trim()); //Only if Key are unique 
var kvp = str.Split(',').Select(s=> s.Split('=')).Select(a=> new KeyValuePair<string,string>(a[0].Trim(), a[1].Trim())); 

Затем вы можете использовать другой Linq для выбора ключа требуется.

var requiredValue = kvp.Where(u=> u.Key == "CN").Value; 

предоставит вам требуемое значение.

0
private string[] FindKeyValue(string str, string key) 
{ 
    return str.Split(",".ToCharArray()) 
     .Select(x => x.Split("=".ToCharArray())) 
     .Where(x => x[0] == key).Select(x => x[1]).ToArray(); 
} 

Предполагая, что вы хотите знать значение CN, OU, DC и т.д. Строка у вас есть, выглядит как ключевой пары значений, где «CN» является ключевым и «Amy Java» это значение. Кажется, что ключ может присутствовать несколько раз в строке. Поэтому у вас есть несколько значений для ключа. Используйте его следующим образом:

var str1 = "CN=Amy Java,OU=Singapore,OU=Users,DC=domain,DC=com"; 
string[] valuesOfCN = FindKeyValue(str1, "CN"); 

Если вы хотите только одно значение, например, как первое значение, то используйте

var str1 = "CN=Amy Java,OU=Singapore,OU=Users,DC=domain,DC=com"; 
string firstValueOfCN = FindKeyValue(str1, "CN").First(); 
Смежные вопросы