C#-将文件中的10条随机行(无重复)写入15个文件中的每一个

台风

所以我一直试图做一个功能

  1. 遍历26个文件的文件夹中的每个文件,
  2. 从20行文件中随机抽取10行,
  3. 检查当前选择的行是否已在当前文件中,如果正在尝试再次选择,
  4. 将10条随机行写入每个文件。

到目前为止,这就是我所得到的。但是我不知道为什么它总是越界。我试图通过循环将文件中的行放入另一个数组中,但这也无济于事。有人看到错了吗?

string[] lines = File.ReadAllLines(@"randomLines.txt");
assignLines(lines);
static void assignLines(string[] listOfLines)
        { 
            Random rnd = new Random();

            foreach (var file in Directory.EnumerateFiles(@"files", @"*.txt"))
            {
                string[] assignedLines = new string[] { };
                int j = 1;
                int i = 0;
                StreamWriter wr = new StreamWriter(file);
                while (i < 5)
                //for (int i = 0; i < File.ReadAllLines(file).Length + 1; i++)
                {

                    int chosen = rnd.Next(0, listOfLines.Length - 1);

                    if (assignedLines.Contains(listOfLines[chosen]))
                    {
                        continue;
                    }
                    else
                    {
                        assignedLines[i] = listOfLines[chosen];
                        wr.WriteLine(j + ". " + listOfLines[chosen] + ".");
                        j++;
                        i++;
                    }
                }
                wr.Close();
            }
        }
阿什坎·莫巴宁·基阿巴尼

您可以随机地对行进行排序,然后取其中的10条:

Random rnd = new Random();
string[] lines = File.ReadAllLines(@"randomLines.txt")
                 .OrderBy(x => rnd.Next())
                 Take(10)
                 .ToArray();

如果您在评论中提到,您的行也可能包含重复项,那么请在订购前删除重复项:

string[] lines = File.ReadAllLines(@"randomLines.txt")
                 .Distinct()     //this line will remove duplicates
                 .OrderBy(x => rnd.Next())
                 Take(10)
                 .ToArray();

现在,您可以循环思考文件并编写这10行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系debugcn[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档