如何提取子串" Amy Java"从C#下面的字符串?
CN=Amy Java,OU=Singapore,OU=Users,DC=domain,DC=com
答案 0 :(得分: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();
答案 1 :(得分:1)
这就是你所需要的一切。
string result = str.Split(',')[0].Split('=')[1];
答案 2 :(得分: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;
会给你所需的价值。
答案 3 :(得分: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();