2016-10-07 53 views
-2

C#の下の文字列から部分文字列 "Amy Java"を抽出するにはどうすればよいですか?文字列から部分文字列を抽出する

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

を使用しますが、その後、質問に追加?何を試してみました。 –

+2

その外観から。それはLDAP文字列のようです。その場合、あなたは間違いなくドメイン名を取得することができます。 – A3006

+0

上記の文字列がテキストボックスに表示され、その部分文字列「Amy Java」を抽出する必要があります –

答えて

1

すべてが必要です。

string result = str.Split(',')[0].Split('=')[1]; 
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(); 
+0

これはちょっと残忍だけど、キーを探すのが好きだよ。 – Doruk

+0

名前にエスケープされた '、'、 '= '文字がないことを願っています。 – Rawling

+0

@Rawling - はい、同意しました。 – Enigmativity

0

、あなたは現在の文字列例えばDictionary(String内で一意の値の場合に提供)、または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; 

はあなたに必要な値を与えます。などDC、あなたがCN、OUの値を知ってほしいと仮定

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」はキーであり、「エイミー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(); 
関連する問題