从文本中分配变量
本文关键字:变量 分配 文本 | 更新日期: 2023-09-27 18:13:49
我正试图从文本文件中读取一些文本,并将每行分配给不同的变量。
我相信我确实理解为什么我的程序输出错误的数据,但我不确定如何以不同的方式处理它。
希望有人能给我指出正确的方向或提供建议,让我采取不同的方法。
namespace Towns{
class Program
{
static void Main(string[] args)
{
Town York = new Town();
//York.Name = "York";
//York.Population = 1345;
printTownDetails(York, "York.txt");
Console.ReadLine();
}
private static void printTownDetails(Town _town, string txtFile)
{
System.IO.StreamReader reader = new System.IO.StreamReader(txtFile);
string line = "";
while (line != null)
{
line = reader.ReadLine();
if (line != null)
{
_town.Name = line;
/*From my novice debugging skills I think this
is why my program outputs only the second line in the text file.
The loop overwrites the _town.Name variable with the second line.*/
_town.Population = line;
}
}
Console.WriteLine("Town: {0}", _town.FormatMe());
}
}
class Town
{
public string Name { get; set; }
public string Population { get; set; }
public string FormatMe()
{
return String.Format("{0} - {1}",
this.Name,
this.Population);
}
}}
文本文件只包含两个变量。
York
1345
您可以在下面这样做。但是,不需要写入控制台,只需将信息加载到变量中。
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:'temp'MyTest.txt";
try
{
using (StreamReader sr = new StreamReader(path))
{
while (sr.Peek() >= 0)
{
Console.WriteLine(sr.ReadLine());
}
}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
在读取if(line!=null)的代码块中,您可以运行一个索引,并在每次读取一行代码时增加它。然后,所有的字符串将存储在一个数组中,您可以从那里将它们设置为变量。
如果文件中总是只有两行,则可以这样做:
private static void printTownDetails(Town _town, string txtFile)
{
string[] lines = System.IO.File.ReadAllLines(txtFile);
_town.Name = lines[0];
_town.Population = lines[1];
Console.WriteLine("Town: {0}", _town.FormatMe());
}