用C#读取txt文件时,当txt中数据的分隔符是空格,而且空格数量不等时,如果直接用Split直接对每行进行分隔,那么list的数目会比每行的列数多,并不是真实的每行的列数。这时要把不等数目的空格全变成1个空格,这样计数才正确。代码如下:
public static Listsplit(string s,char splitchar=' '){return s.Split(splitchar).Select(p=>p.Trim()).Where(p=>p.Length>0).ToList();}
我的程序是这样子的:
using (StreamReader sr = new StreamReader(filePath)) { string line; while ((line = sr.ReadLine()) != null) { if (i == int.Parse(textBox1.Text)-1) { ListdataItems=line.Split(' ').Select(p => p.Trim()).Where(p => p.Length > 0).ToList(); double angleX = (double.Parse(dataItems[dataItems.Count - 1])) * pi / 180; //ArrayList dataItems2 = new ArrayList(dataItems); dataItems.Remove(dataItems2[dataItems.Count - 1]);
还存在一个问题是如果列表形式为string[]dataItems,则没有删除列表中某一元素的操作,需将dataItems转换为ArrayList dataItems1。如果为List<string>dataItems,则可直接用dataItems.Remove(dataItems[dataItems.Count])来删除某一元素。