C#有选择地读入文本文件,对读入的文件,每一行都进行相应的处理,最后输出想要的部分。

sht8579381 2012-07-09 12:37:59
*NODE ; Nodes
; iNO, X, Y, Z
1, 15.6023002639413, -15.6023002564907, -10.6
2, 15.9999996200204, -15.6023002620786, -10.6
3, 19.2000003829598, -15.6023002620786, -10.6
4, 22.3999992385507, -15.6023002620786, -10.6
5, 25.9999996200204, -15.6023002620786, -10.6
*ELEMENT ; Elements
; iEL, TYPE, iMAT, iPRO, iN1, iN2, ANGLE, iSUB, EXVAL, iOPT(EXVAL2) ; Frame Element
; iEL, TYPE, iMAT, iPRO, iN1, iN2, ANGLE, iSUB, EXVAL, EXVAL2, bLMT ; Comp/Tens Truss
; iEL, TYPE, iMAT, iPRO, iN1, iN2, iN3, iN4, iSUB, iWID ; Planar Element
; iEL, TYPE, iMAT, iPRO, iN1, iN2, iN3, iN4, iN5, iN6, iN7, iN8 ; Solid Element
; iEL, TYPE, iMAT, iPRO, iN1, iN2, REF, RPX, RPY, RPZ, iSUB, EXVAL ; Frame(Ref. Point)
7735, BEAM , 19, 55, 3162, 2373, 90
7736, BEAM , 19, 55, 3163, 2375, 90
7737, BEAM , 19, 55, 3164, 2376, 90
7738, BEAM , 19, 55, 3165, 2378, 90
7739, BEAM , 19, 55, 3166, 2380, 90
7740, BEAM , 19, 55, 3167, 2382, 90
如上面所示,这是源文件,读入时,每行分号后面的内容都不要。且对于下面的那部分数据只要部分内容,最后输出的内容如下所示:
*NODE
1, 15.6023002639413, -15.6023002564907, -10.6
2, 15.9999996200204, -15.6023002620786, -10.6
3, 19.2000003829598, -15.6023002620786, -10.6
4, 22.3999992385507, -15.6023002620786, -10.6
5, 25.9999996200204, -15.6023002620786, -10.6
*ELEMENT
7735, 3162, 2373
7736, 3163, 2375
7737, 3164, 2376
7738, 3165, 2378
7739, 3166, 2380
7740, 3167, 2382
...全文
211 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-07-09
  • 打赏
  • 举报
回复
using System.IO;

#region 从文件中读取出数据,以List<string>方式保存

private List<string> listSourceData = new List<string>();

/// <summary>
/// 功 能:从文件中读取数据
/// 作 者:Liu Hao | 日期:2012年5月12日
/// </summary>
/// <param name="fileName">文件名,含路径</param>
/// <returns>返回的数据</returns>
private void ReadData(string fileName)
{
FileStream infoReadFile = new FileStream(fileName, FileMode.Open, FileAccess.Read); //打开指定的文件,并进行读操作
StreamReader irMyfile = new StreamReader(infoReadFile, System.Text.Encoding.Default);

irMyfile.BaseStream.Seek(0, SeekOrigin.Begin); // 把文件指针重新定位到文件的开始

string line; //接收StreamReader读取的行
while ((line = irMyfile.ReadLine()) != null)
{
if (!String.IsNullOrEmpty(line))
{
this.listSourceData.Add(line);
}
}

irMyfile.Close();
infoReadFile.Close();
}

#endregion

先把所有的读出来,在一行一行的处理 ,处理就不用说了,每一行一个一个字符的取,取到分号,后面的直接抛弃,换下一行
sht8579381 2012-07-09
  • 打赏
  • 举报
回复
2楼的解决方法可以写的详细点吗
sht8579381 2012-07-09
  • 打赏
  • 举报
回复
接1楼 读我会读,但就是不知道怎么一行一行的处理~~我用了这个,但是我觉得还是有点问题,而且输出也是全部输出:
while (line != null)
{
if (line.Contains(";"))
{
Console.WriteLine(line.Substring(0, line.IndexOf(';')));
}
else
{
Console.WriteLine(line);
}


line = sr.ReadLine();
}
bdmh 2012-07-09
  • 打赏
  • 举报
回复

StreamReader reader = new StreamReader("c:\\1.txt");
while (!reader.EndOfStream)
{
string str = reader.ReadLine();
if (str.StartsWith(";")) continue;
//这里其他行,可以以逗号分隔,split,或者正则取出
}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧