C# 从字符串中提取子字符串
如何从C#中的下面字符串中提取子字符串“Amy Java” 这就是你所需要的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
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();