我有一个文本文件,其中包含字符串列表(示例6|Chicago|Illinois|I-98;I-90
)。我正在尝试创建两个类。一类(CityReader
)读取文本文件,其他文件将其打印。我声明了一个具有4个变量的类(CityItem
),它们是int人口,字符串城市,字符串状态,List<int>
州际公路。
在CityReader
类中,我创建了CityItem
Object(CIObj)
,并且能够读取文件并定界并返回CIObj
。但是,当我从另一个类访问此对象时,我只会看到文本文件中的最后一行。该对象未返回所有值。
我意识到尽管我在每个循环中都在读取文件。我没有存储这些值,因此该对象仅持有最后一个对象。
CityItem Class-----
using System;
using System.Collections.Generic;
using System.Text;
namespace ReadingAtxtFile
{
public class CityItem
{
public int Population { get; set; }
public string City { get; set; }
public string State { get; set; }
public List<int> Interstates = new List<int>();
}
}
CityReader Class-----
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Collections;
namespace ReadingAtxtFile
{
public class CityReader
{
public CityItem ReadCities(string FilePath)
{
CityItem CIObj = new CityItem();
var AllLines = File.ReadAllLines(FilePath, Encoding.UTF8);
try
{
foreach (var item1 in AllLines)
{
string[] EachLine = item1.Split('|');
CIObj.Population = Convert.ToInt32(EachLine[0]);
CIObj.City = EachLine[1];
CIObj.State = EachLine[2];
string[] IStates = EachLine[3].Split(';');
foreach (var item2 in IStates)
{
var IStatesAfterSplit = item2.Split("-");
CIObj.Interstates.Add(Convert.ToInt32(IStatesAfterSplit[1]));
}
}
}
catch (Exception)
{
Console.WriteLine("There is an issue with processing the data");
}
return CIObj;
}
}
}
输入文本文件:
6|Oklahoma City|Oklahoma|I-35;I-44;I-40
6|Boston|Massachusetts|I-90;I-93
8|Columbus|Ohio|I-70;I-71
我正在尝试处理文本文件并根据需要打印数据。例如。人口
Population,
City, State,
Interstates: I-35,I-40,I-45 (Sorted order)
答案 0 :(得分:0)
您的ReadCities方法需要返回某种CityItem对象的集合,而不仅仅是一个CityItem对象。 .Net支持各种类型的集合,但是List可能最适合此实例。
然后,在填充CityItem对象之后,移至循环的下一个迭代之前,将CityItem对象添加到列表中。像...
List<CityItem> listOfCityItems = new List<CityItem>();
foreach (var line in AllLines)
{
CityItem ci = new CityITem();
// Populate the properties of ci
listOfCityItems.Add(ci);
}