2

C#で以下の文字列から部分文字列「John Woo」を抽出するにはどうすればよいですか

CN=ジョン・ウー、OU=IT、OU=HO、DC=ABC、DC=com

ありがとう !

4

6 に答える 6

4

を使用できますLookup<TKey, TElement>

string text = "CN=John Woo,OU=IT,OU=HO,DC=ABC,DC=com";
var keyValues = text.Split(',')
    .Select(s => s.Split('='))
    .ToLookup(kv => kv[0], kv => kv.Last());
string cn = keyValues["CN"].FirstOrDefault();  // John Woo
// or, if multiple values with the same key are allowed (as suggested in the given string)
string dc = string.Join(",", keyValues["DC"]); // ABC,com

キーが存在しない場合 (ディクショナリのように) も、キーが一意でない場合も (ディクショナリのように)、例外は発生しないことに注意してください。値はIEnumerable<TElement>です。

于 2013-09-30T11:28:15.503 に答える
2

これを試して

var regex = new Regex("CN=(?<mygroup>.*?),");
var match = regex.Match("CN=John Woo,OU=IT,OU=HO,DC=ABC,DC=com");
if(match.Success)
{
    string result = match.Groups["mygroup"].Value;
}
于 2013-09-30T11:28:09.403 に答える
1

このようなもの

var s = "CN=John Woo,OU=IT,OU=HO,DC=ABC,DC=com";
// this give you a enumarable of anonymous key/value
var v = s.Split(',') 
         .Select(x => x.Split('='))
         .Select(x => new
                      {
                          key = x[0],
                          value = x[1],
                      });
var name = v.First().value; // John Woo
于 2013-09-30T11:33:55.667 に答える
1

これを試してください(これは一般的な答えではありません):

var name = str.Split(',').Where(n => n.StartsWith("CN=")).FirstOrDefault().Substring(3);
于 2013-09-30T11:27:58.147 に答える
0

最初に文字列をコンマで分割して、文字列の配列を取得できます。それぞれの文字列は、次のように区切られた名前/値のペア=です。

string input = "CN=John Woo,OU=IT,OU=HO,DC=ABC,DC=com";
var nameValuePairs = input.Split(new[] {','});

次に、最初の名前/値のペアを次のように分割できます。

var nameValuePair = nameValuePairs[0].Split(new[]{'='});

最後に、値の部分は次のようになりますnameValuePair[1]

var value = nameValuePair[1];

(上記のエラー処理はありません。もちろん、いくつか追加する必要があります。)

于 2013-09-30T11:33:38.803 に答える