关于读取txt文件的分段问题
2008-03-18 21:25
344 查看
txt文件格式如下:
[属性1]
参数=2210.3,12.65,115,25,420.66,445.69,0.569
[属性2]
9,0.018,2003-10,@
J01,1,3751508.5,39438683.65
J02,1,3751508.5,39438690.15
5,0.0247,2003-12,@
J01,1,3755389.7,39437380.2
怎样把属性1和属性2分离出来?属性一算是一段,属性2算是另一段,属性2中可能有多个以‘@’结尾的部分又需要分成多个小段。
我主要是想将txt分成3部分,一个是属性1和属性2之间的那一段,第二部分是以‘@’结尾的那一行到下一个以'@'结尾的那一行之前的那一段,就是示例
中的第4、5、6三行,第三部分就是之后的7、8两行,也就是和第二部分差不多的,要求要是有多个‘@’结尾的部分的话要求能分成多段。
不知道我说明白没有,不明白的一起讨论一下!
成果:
1 /// <summary>
2 /// Gets the ZD array.
3 /// </summary>
4 /// <param name="fileName">Name of the file.</param>
5 /// <returns></returns>
6 private ArrayList GetZDArray(string fileName)
7 {
8 //读取文件内容
9 StreamReader sr = new StreamReader(fileName, System.Text.Encoding.Default);
string tempStr = ""; //sr.ReadLine();
ArrayList ArrList = new ArrayList();
ArrayList csArrList = new ArrayList();
ArrayList dkArrList = new ArrayList();
ArrayList zbArrList = new ArrayList();
//初步整理文件内容并读出至ArrList中
while ((tempStr = sr.ReadLine()) != null)
{
tempStr = tempStr.Trim();
if (tempStr.Length < 1)
continue;
if (tempStr.IndexOf("[属性1]") == 0 ||tempStr.IndexOf("[属性2]") == 0)
{
continue;
}
else if (tempStr.Split('=').Length > 1)
{
csArrList.Add(tempStr);
}
else
{
dkArrList.Add(tempStr);
}
}
sr.Close();
ArrList.Add(csArrList);
ArrList.Add(dkArrList);
return ArrList;
}
/// <summary>
/// Gets the ZB STR from array.
/// </summary>
/// <param name="ArrList">The arr list.</param>
/// <returns></returns>
private string GetZBStrFromArray(ArrayList ArrList)
{
string dkstr = "";
string tem = "";
int spl = 0;
for (int i = 0; i < ArrList.Count; i++)
{
tem = (string)ArrList[i];
if (tem.Trim().Length < 1)
continue;
if (tem.Substring(tem.Length - 1, 1) == "@")
{
//continue;
spl++;
dkstr = dkstr + "#" + tem;
}
else
{
dkstr = dkstr + tem + "$";
}
}
return dkstr;
}
private bool InsertDKAndZB(string dkzbStr)
{
string[] dkandzb = dkzbStr.Split('#');
for (int i = 0; i < dkandzb.Length; i++)
{
string val1 = "";
if (dkandzb[i].Trim().Length < 1)
continue;
string[] dkStr = dkandzb[i].Split('@');
//dkStr 就是属性2中的一小段
}
}
[属性1]
参数=2210.3,12.65,115,25,420.66,445.69,0.569
[属性2]
9,0.018,2003-10,@
J01,1,3751508.5,39438683.65
J02,1,3751508.5,39438690.15
5,0.0247,2003-12,@
J01,1,3755389.7,39437380.2
怎样把属性1和属性2分离出来?属性一算是一段,属性2算是另一段,属性2中可能有多个以‘@’结尾的部分又需要分成多个小段。
我主要是想将txt分成3部分,一个是属性1和属性2之间的那一段,第二部分是以‘@’结尾的那一行到下一个以'@'结尾的那一行之前的那一段,就是示例
中的第4、5、6三行,第三部分就是之后的7、8两行,也就是和第二部分差不多的,要求要是有多个‘@’结尾的部分的话要求能分成多段。
不知道我说明白没有,不明白的一起讨论一下!
成果:
1 /// <summary>
2 /// Gets the ZD array.
3 /// </summary>
4 /// <param name="fileName">Name of the file.</param>
5 /// <returns></returns>
6 private ArrayList GetZDArray(string fileName)
7 {
8 //读取文件内容
9 StreamReader sr = new StreamReader(fileName, System.Text.Encoding.Default);
string tempStr = ""; //sr.ReadLine();
ArrayList ArrList = new ArrayList();
ArrayList csArrList = new ArrayList();
ArrayList dkArrList = new ArrayList();
ArrayList zbArrList = new ArrayList();
//初步整理文件内容并读出至ArrList中
while ((tempStr = sr.ReadLine()) != null)
{
tempStr = tempStr.Trim();
if (tempStr.Length < 1)
continue;
if (tempStr.IndexOf("[属性1]") == 0 ||tempStr.IndexOf("[属性2]") == 0)
{
continue;
}
else if (tempStr.Split('=').Length > 1)
{
csArrList.Add(tempStr);
}
else
{
dkArrList.Add(tempStr);
}
}
sr.Close();
ArrList.Add(csArrList);
ArrList.Add(dkArrList);
return ArrList;
}
/// <summary>
/// Gets the ZB STR from array.
/// </summary>
/// <param name="ArrList">The arr list.</param>
/// <returns></returns>
private string GetZBStrFromArray(ArrayList ArrList)
{
string dkstr = "";
string tem = "";
int spl = 0;
for (int i = 0; i < ArrList.Count; i++)
{
tem = (string)ArrList[i];
if (tem.Trim().Length < 1)
continue;
if (tem.Substring(tem.Length - 1, 1) == "@")
{
//continue;
spl++;
dkstr = dkstr + "#" + tem;
}
else
{
dkstr = dkstr + tem + "$";
}
}
return dkstr;
}
private bool InsertDKAndZB(string dkzbStr)
{
string[] dkandzb = dkzbStr.Split('#');
for (int i = 0; i < dkandzb.Length; i++)
{
string val1 = "";
if (dkandzb[i].Trim().Length < 1)
continue;
string[] dkStr = dkandzb[i].Split('@');
//dkStr 就是属性2中的一小段
}
}
相关文章推荐
- 关于读取txt文件的分段问题
- 关于javascript从txt文件中读取内容出现乱码的问题
- 关于使用IDEA读取txt文件出现中文乱码的问题
- 解决php读取txt文件时的换行问题
- 今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用!
- 关于python3.x读取写入文件时编码报错问题
- 关于文件读取的一点小问题
- 关于读取Properties文件的相对路径问题,怎么写是正确的?
- 关于解决java读取excel文件遇空行抛空指针的问题 !
- 关于系统读取properties配置文件的路径问题,包括打成jar包的运行文件
- 关于用Getline读取文件只能读取首行的问题
- 关于Web系统引用js或其他文件路径读取的问题
- Java关于读取配置文件Parsing failed.的问题org.logicalcobwebs.proxool.ProxoolException: Parsing failed.
- 关于WinForms读取资源文件.resx时的变量声明问题
- 今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用!
- 关于安卓读取资源文件的问题
- 关于在Spark集群中读取本地文件抛出找不到文件异常的问题
- 关于读取文件内容时报sun.io.MalformedInputException的问题 [转]
- 关于在TextBox中写入换行“\r”有用,但是在txt文件中使用“\r”无效的问题
- python读取txt文件时的中文乱码问题