【发布时间】:2015-06-09 11:10:45
【问题描述】:
我有一个包含如下行的文本文件:
@relation SMILEfeatures
@attribute pcm_LOGenergy_sma_range numeric
@attribute pcm_LOGenergy_sma_maxPos numeric
@attribute pcm_LOGenergy_sma_minPos numeric...
这些属性的大约 6000 行在哪里,在属性之后是这样的行:
@data
1.283827e+01,3.800000e+01,2.000000e+00,5.331364e+00
1.850000e+02,4.054457e+01,4.500000e+01,3.200000e+01...
我需要将这些字符串分隔在两个不同的数组中。到目前为止,我只设法将所有内容存储在一个数组中。
这是我在数组中存储的代码:
using (var stream = new FileStream(filePath, FileMode.OpenOrCreate))
{
using (var sr = new StreamReader(stream))
{
String line;
while ((line = sr.ReadLine()) != null)
{
sb.AppendLine(line);
}
}
string allines = sb.ToString();
Console.WriteLine(sb);
}
【问题讨论】:
-
问题是什么?哪些字符串应该在第二个数组中?
-
所有以
@relation SMILEfeatures开头并包含@attribute 的字符串都应存储在第一个数组中。以@data开头的数字应存储在第二个数组中。 -
表示一串=一行?还是@data 仅在每个段落之前?
-
我的意思是线条。在另一个带有数字的段落之后有一个带有属性的大段落。
-
目前您正在阅读文件中的所有文本,不是吗?实现此目的的更简单方法是: string text = System.IO.File.ReadAllText(filePath);为了获得文本的指定方,如果您有分隔部分,我建议使用 String.Split() 方法;如果您的文本中有固定方案,则建议使用 String.Substring() 方法。 System.String 类有很多方法可以使用,查看 MSDN 以找到合适的方法。