根据txt文件中的格式类型/绘图数据处理字符串的任何方法
本文关键字:数据处理 绘图 字符串 方法 任何 类型 txt 文件 格式 根据 | 更新日期: 2023-09-27 18:35:03
一个
制表符分隔的 txt 文件正在逐行读取到字符串列表中。 目的是使用字符串的格式类型(如日期时间或浮点数或字符串等(处理字符串的每个单词? 以便可以绘制数据.还有其他有效的方法可以做到这一点吗?
using (StreamReader file = new StreamReader(@"C:'Users''Desktop'snpprivatesellerlist.txt"))
{
while ((line = file.ReadLine()) != null)
{
char[] delimiters = new char[] { ''n' };
string[] parts = line.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < parts.Length; i++)
{
st = parts[i];
// process the line - if part[i] is date time - do something ()
// if part[i] is a float - do something else()
}
}
}
任何帮助和见解都值得赞赏。谢谢。
我建议使用TryParse,就像这样...
string line;
using (StreamReader file = new StreamReader(@"C:'Users'Desktop'snpprivatesellerlist.txt"))
{
while ((line = file.ReadLine()) != null)
{
string st;
DateTime dtPart;
float flPart;
char[] delimiters = new char[] { ''n' };
string[] parts = line.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < parts.Length; i++)
{
st = parts[i];
if (DateTime.TryParse(st, out dtPart))//Is of type DateTime
{
//Do something with DateTime dtPart
}
else if (float.TryParse(st, out flPart))//Is of type float
{
//Do something with float flPart
}
else//Can be considered a string
{
//Do something with string st
}
}
}
}
如果制
表符分隔文件中的字段始终属于同一类型,并且 no.of 字段是固定的。
然后,您可以创建一个结构类来存储每个行值。
class LineData
{
public float a {get; set;}
public DateTime b {get; set;}
}
在方法实现中(即在while
中(:
string[] parts = line.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
//You know 1st column is float, 2nd column is datetime
var dt = new LineData();
float.TryParse(parts[0], out dt.a);
DateTime.TryParse(parts[1], out dt.b);
//...
//store dt in a list/array. (not shown here)
有点解决我问题的代码 - 但我仍在工作。
using (StreamReader file = new StreamReader(@"C:'Users'Desktop'snpprivatesellerlist.txt"))
{
while ((line = file.ReadLine()) != null)
{
char[] delimiter1 = new char[] { ''n' };
string[] part1 = line.Split(delimiter1, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < part1.Length; i++)
{
sepList.Add(part1[i]);
//st = part1[i];
}
}
file.Close();
}
char[] delimiter2 = new char[] { ''t' };
for (int j = 4; j < sepList.Count; j++)
{
st = sepList[j];
string[] part2 = st.Split(delimiter2, StringSplitOptions.RemoveEmptyEntries);
alist.Add(part2);
}
//DateTime time = new DateTime();
//float value = new float();
string tagname = alist[0][0];
for (int y = 0; y < alist.Count; y++)
{
if (alist[y][0]==tagname)
{
alist1.Add(alist[y]);
}
else
{
SensorProbeDataContainer sensorprobe = new SensorProbeDataContainer();
sensorprobe.Setdata(templist);
sensorprobe.SensorProbe = sensorprobe.data[0][0];
ProbeList.Add(sensorprobe.SensorProbe);
DateTime.TryParse(sensorprobe.data[0][2], out sensorprobe.StartDate);
DateTime.TryParse(sensorprobe.data[(sensorprobe.data.Count - 1)][2], out sensorprobe.EndDate);
classcontainer.Add(sensorprobe);
tagname = alist[y][0];
templist.Clear(); }
}
我正在尝试在这个线程上关注它 - https://stackoverflow.com/questions/10719396/iterating-separating-list-of-string-arrays-based-on-first-element
谢谢大家的帮助。如果您发现代码中的任何错误,请指出。