Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从dat文件中分离字符串_C#_Asp.net_Regex - Fatal编程技术网

C# 从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

我有几个.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: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);
                }