从文本文件中选取特定行,并将该行洒在数组中

本文关键字:数组 选取 文本 文件 | 更新日期: 2023-09-27 17:57:07

我想做的是从文本文件中挑选一行。该行号与局部变量相对应。因此,如果变量为 1,请选择第一行。文本文件位于 资源 中并称为 nl_5.txt。之后,选择的行(单词)应放置在新数组中,但每个字母应放置在新索引中。因此,如果变量为 1,则第一行是苹果。像这样:

string[] arr1 = new string[] { "a", "p", "p", "l", "e" }; (0=a 1=p 2=p 3=l 4=e)

如果局部变量更改为 2,则应读取第二行,并使用另一行(其他单词,其他字母)更改数组。我应该怎么做?

我发现了不同的变体,例如读取完整文件或读取定义的特定行,但我尝试了很多,但没有正确的结果。

int lineCount = File.ReadAllLines(@"C:'test.txt").Length;
int count = 0;

private void button1_Click(object sender, EventArgs e)
{
    var reader = File.OpenText(@"C:'test.txt");

    if (lineCount > count)
    {
        textBox1.Text = reader.ReadLine();
        count++;
    }
}

从文本文件中选取特定行,并将该行洒在数组中

首先,让我们通过 Linq 获取单词:

 int line = 3; // one based line number
 string word = File
   .ReadLines(@"C:'test.txt") //TODO: put actual file name here
   .Skip(line - 1) // zero based line number
   .FirstOrDefault();

然后将word转换为数组

 string[] arr1 = word
   .Select(c => c.ToString())
   .ToArray(); 

如果必须读取文件以查找许多不同的line则可以缓存该文件:

   // Simplest, not thread safe
   private static string[] file;
   // line is one-based
   private static string[] getMyArray(int line) {
     if (null == file)
       file = File.ReadAllLines(@"C:'test.txt");
     // In case you have data in resource as string
     // read it and (split) from the resource
     // if (null == file)
     //   file = Resources.MyString.Split(
     //     new String[] { Environment.NewLine }, StringSplitOptions.None);
     string word = (line >= 1 && line < file.Length - 1) ? file[line - 1] : null;
     if (null == word)
       return null; // or throw an exception
     return word
       .Select(c => c.ToString())
       .ToArray(); 
   }