結果文字列には入力文字列が含まれます:1 2 3 a b c
期待される操作:
1 a
2 b
3 c
私が試したこと:
resultKV=result.Split('\t');
foreach (string KV in resultKV)
{
Console.WriteLine(KV);
}
結果文字列には入力文字列が含まれます:1 2 3 a b c
期待される操作:
1 a
2 b
3 c
私が試したこと:
resultKV=result.Split('\t');
foreach (string KV in resultKV)
{
Console.WriteLine(KV);
}
var parts = "1 2 3 a b c".Split();
var dict = parts.Select((s, inx) => new { s = s, inx = inx })
.GroupBy(x => x.inx % (parts.Length / 2))
.ToDictionary(x => x.First().s, x => x.Last().s);
副作用を利用して、より短くすることができます
var parts = "1 2 3 a b c".Split();
int inx = 0;
var dict = parts.GroupBy(x => inx++ % (parts.Length / 2))
.ToDictionary(x => x.First(), x => x.Last());
string input = "1 2 3 a b c";
var parts = input.Split(' ');
if (parts.Length % 2 == 0)
{
var d = new Dictionary<string, string>();
var halfLength = parts.Length / 2;
for (int i = 0; i < halfLength; i++)
{
d[parts[i]] = parts[halfLength + i];
}
// at this stage the dictionary will contain the desired result
}
else
{
Console.WriteLine("Must have a pair number to build the dictionary");
}
分割すると複数の項目になりますか? または言い換えれば、それは正しいエスケープシーケンスですか? もしそうなら、多分あなたは次のようなことをすることができます:
int l = resultKV.lenght/2;
if(l % 2 == 0)
for(int i = 0; i < l; i++){
Console.WriteLine(resultKV[i]); Console.WriteLine(resultKV[i+l]);
}
(未検証)
私が問題を理解できる限り、次のように解決します:
1.入力文字列を半分に分割し、part1 と part2 を作成します
2.文字列の 1 つを繰り返し処理し、文字を 1 つずつ出力します
私はc#を知りませんが
、ソリューションを他の文字列に適用したい場合は
編集を実装するのはかなり簡単です.両方の部分が同じ長さであるかどうかなどを確認したい場合があります.