-5

结果字符串包含输入字符串:1 2 3 a b c

预期操作:

1 a
2 b
3 c

我尝试了什么:

resultKV=result.Split('\t');
foreach (string KV in resultKV)
{
    Console.WriteLine(KV);                    
} 
4

4 回答 4

1
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());
于 2013-09-06T09:20:40.930 回答
0
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");
}
于 2013-09-06T09:19:44.237 回答
0

据我所知,我会这样解决:
1.将输入字符串分成两半,这样你就有 part1 和 part2
2.遍历其中一个字符串并一个一个打印出字符

我不知道任何 c#,但是如果你想将解决方案应用于其他字符串,那应该很容易实现
编辑
,你可能想检查两个部分是否具有相同的长度等。

于 2013-09-06T09:21:25.047 回答
0

拆分结果是否不止一项?或者换句话说:它是正确的转义序列吗?如果是这样,也许你可以做任何事情:

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]);

} (未测试)

于 2013-09-06T09:22:15.983 回答