C#の下の文字列から部分文字列 "Amy Java"を抽出するにはどうすればよいですか?文字列から部分文字列を抽出する
CN=Amy Java,OU=Singapore,OU=Users,DC=domain,DC=com
C#の下の文字列から部分文字列 "Amy Java"を抽出するにはどうすればよいですか?文字列から部分文字列を抽出する
CN=Amy Java,OU=Singapore,OU=Users,DC=domain,DC=com
すべてが必要です。
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();
これはちょっと残忍だけど、キーを探すのが好きだよ。 – Doruk
名前にエスケープされた '、'、 '= '文字がないことを願っています。 – Rawling
@Rawling - はい、同意しました。 – Enigmativity
、あなたは現在の文字列例えば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の値を知ってほしいと仮定
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();
を使用しますが、その後、質問に追加?何を試してみました。 –
その外観から。それはLDAP文字列のようです。その場合、あなたは間違いなくドメイン名を取得することができます。 – A3006
上記の文字列がテキストボックスに表示され、その部分文字列「Amy Java」を抽出する必要があります –