foreach多次并显示两个数组

时间:2018-06-23 17:26:15

标签: c#

在foreach中我需要一些帮助:

我的代码:

var Content = "nickname:Steven ID:01 nickname:pascal ID:02 nickname:nils ID:03";
            var v = Content.Split().Where(l => l.StartsWith("nickname:")).ToList();
            var c = Content.Split().Where(l => l.StartsWith("ID:")).ToList();
            for(int i = 0; i < v.Count(); i++)
            {
                var x = v[i];
                foreach (var o in c)
                {
                    var b = o;
                    listBox1.Items.Add(x + " - " + b);
                }
            }

输出:

nickname:Steven - ID:01
nickname:Steven - ID:02
nickname:Steven - ID:03
nickname:pascal - ID:01
nickname:pascal - ID:02
nickname:pascal - ID:03
nickname:nils - ID:01
nickname:nils - ID:02
nickname:nils - ID:03

我只想显示昵称和ID,但是出了点问题。 我不知道该如何解决。

最好的问候

4 个答案:

答案 0 :(得分:2)

如果要使用正则表达式替代,

SetWindowPos

答案 1 :(得分:1)

您不需要两个循环,这就是为什么它会提供您不想要的结果的原因。 记住,内循环对于外循环的每个值完全运行

我已为您更正了代码:

var Content = "nickname:Steven ID:01 nickname:pascal ID:02 nickname:nils ID:03";
        var v = Content.Split().Where(l => l.StartsWith("nickname:")).ToList();
        var c = Content.Split().Where(l => l.StartsWith("ID:")).ToList();
            for(int i = 0; i < v.Count(); i++)
            {
                var x = v[i];
                var ids = c[i];
                Console.Write(x.ToString() + " - ");
                Console.WriteLine(ids.ToString());

            }

答案 2 :(得分:1)

尝试一下:

var Content = "nickname:Steven ID:01 nickname:pascal ID:02 nickname:nils ID:03";
var strs=Content.Split(' ');
for(int i = 0; i < strs.Count(); i+=2)
{
var name = strs[i].Split(':')[1];
var id = strs[i+1].Split(':')[1];
Console.WriteLine(name + " - " + id);

    }

答案 3 :(得分:1)

问题仅在于循环方式。以下是正确循环的方法。

for (int i = 0; i < v.Count(); i++)
{
    listBox1.Items.Add(v[i] + " - " + c[i]);
}