C# 从dat文件中分离字符串
我有几个.dat文件的数据看起来像这样C# 从dat文件中分离字符串,c#,asp.net,regex,C#,Asp.net,Regex,我有几个.dat文件的数据看起来像这样 ˙˙˙Pb16.5 Nw2 ..00-R0634 317. PRESSURE 400.0 CMH2O 1750.0 CMH2O 1750.0 CMH2O 400.0 CMH2O TEMPERATURE -20.00 °C 100.00 °C 100.00 °C -20.00 °C 2:S
˙˙˙Pb16.5 Nw2 ..00-R0634 317. PRESSURE 400.0 CMH2O 1750.0 CMH2O 1750.0 CMH2O 400.0 CMH2O TEMPERATURE -20.00 °C 100.00 °C 100.00 °C -20.00 °C 2:Spec.cond. 0.00 mS/cm 120.00 mS/cm 120.00 mS/cm 0.00 mS/cm 00 00:60:00 0T 00:00:15 29/01/14 00:00:14 30/01/14~**5 ~*–5 ‡*>4 *o3 –*î2 ˇ*z2 ¬*W2
我需要把这行分成两行。第一个字符串将具有:
˙˙˙Pb16.5 Nw2 ..00-R0634 317. PRESSURE 400.0 CMH2O 1750.0 CMH2O 1750.0 CMH2O 400.0 CMH2O TEMPERATURE -20.00 °C 100.00 °C 100.00 °C -20.00 °C 2:Spec.cond. 0.00 mS/cm 120.00 mS/cm 120.00 mS/cm 0.00 mS/cm 00 00:60:00 0T 00:00:15 29/01/14 00:00:14 30/01/14
第二条:
~**5 ~*–5 ‡*>4 *o3 –*î2 ˇ*z2 ¬*W2
下一个问题是:我在这个问题的顶部提到,我只有很少的.dat文件,它们的数据也不可靠。在本例中,我可以很容易地用~char分隔,但问题是文件数据不同。在最后一个日期之后的一些其他文件中,还有一些其他字符,如s*4x*^5
或M};ô
。我不能用确切的字符来区分。也许我可以用字节分开,因为我知道字节数,它的前347个字节,但我不知道怎么分开
string url = @"E:Data.dat";
using (Stream stream = File.Open(url, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader sr = new StreamReader(stream))
{
string str = sr.ReadToEnd(); // or sr.ReadBlock();
//code to separate string after last date
}
我不确定输入文件的一致性如何,但似乎您要提取的值是以~。行中的第一个~,因此对于每一行,您都可以获取~字符的索引并从中读取字符串:
string url = @"E:Data.dat";
using (Stream stream = File.Open(url, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (StreamReader sr = new StreamReader(stream))
{
string str = sr.ReadToEnd();
var characterIndex = str.IndexOf('~');
if (characterIndex >= 0)
{
var result = str.SubString(characterIndex, str.Length - characterIndex);
// Work from here
}
}
}
我创建char数组并给他一个值。然后我创建int readBytes并给他从流读取器(sr)读取块,范围为500,从第一个字符开始读取,读取前59个字符
using (Stream stream = File.Open(url, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader sr = new StreamReader(stream))
{
char[] buffer = new char[500];
int readBytes = sr.ReadBlock(buffer, 0, 59);
}