C# 从字符串中提取子字符串

C# 从字符串中提取子字符串,c#,substring,C#,Substring,如何从C#中的下面字符串中提取子字符串“Amy Java” 这就是你所需要的 string result = str.Split(',')[0].Split('=')[1]; 这对我很有用: var amyJavaText = "CN=Amy Java,OU=Singapore,OU=Users,DC=domain,DC=com" .Split(',') .Select(x => x.Split('=')) .ToLookup(x

如何从C#中的下面字符串中提取子字符串“Amy Java”

这就是你所需要的

string result = str.Split(',')[0].Split('=')[1];
这对我很有用:

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();

除了更通用的方法外,您还可以创建
字典
(如果字符串中提供了唯一的值)或
键值对列表(对于当前字符串示例),如下所示:

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()));
将为您提供所需的价值

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();

你试过什么吗?然后加上问题。从表面上看;它似乎是一个LDAP字符串。在这种情况下,你肯定可以得到域名。我在一个文本框中得到上面的字符串,从中我需要提取子字符串“Amy Java”按“,”拆分它,然后用“=”分割输出我已经标记了一个答案,但作者删除了它。这有点过分了,但我喜欢你寻找的键我希望名称中没有任何转义/引用的
=
字符…@Rawling-是的,同意。
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();