从文本文件中选取特定行,并将该行洒在数组中
本文关键字:数组 选取 文本 文件 | 更新日期: 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();
}