从字符串中提取子字符串

时间:2016-10-07 05:51:55

标签: c# substring

如何提取子串" Amy Java"从C#下面的字符串?

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

4 个答案:

答案 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();
相关问题