Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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# 清理和提取文本文件中的数据_C#_Regex - Fatal编程技术网

C# 清理和提取文本文件中的数据

C# 清理和提取文本文件中的数据,c#,regex,C#,Regex,我需要使用C#从非分隔文本文件中提取数据。基本上,我需要删除所有不需要的字符,然后标记行尾并添加换行符。一旦数据被分离成单独的行,我需要依次循环每一行,并使用正则表达式提取值。我一直在用Perl做这件事,但现在需要用C来做。原始文件在整个文件中包含许多换行字符,而不是像您所期望的那样突出在行尾。我将能够使用Regex对象提取值,但我很难将文件转换为一种格式,即每个记录都有自己的一行。您提供的信息很少,但是。此代码将创建行列表 请注意,ReadLine将采用一个字符序列,后跟换行符(“\n”)、回

我需要使用C#从非分隔文本文件中提取数据。基本上,我需要删除所有不需要的字符,然后标记行尾并添加换行符。一旦数据被分离成单独的行,我需要依次循环每一行,并使用正则表达式提取值。我一直在用Perl做这件事,但现在需要用C来做。原始文件在整个文件中包含许多换行字符,而不是像您所期望的那样突出在行尾。我将能够使用Regex对象提取值,但我很难将文件转换为一种格式,即每个记录都有自己的一行。

您提供的信息很少,但是。此代码将创建行列表

请注意,ReadLine将采用一个字符序列,后跟换行符(“\n”)、回车符(“\r”)或紧接换行符(“\r\n”)的回车符。
我不确定这是否是你所期望的行为

    string fileName = "Text.txt";
    List<string> lines = new List<string>();
    using (StreamReader r = new StreamReader(fileName))
    {
        string line;
        while ((line = r.ReadLine()) != null)
        {
            lines.Add(line);
        }
    }

    foreach (string s in lines)
    {
        Console.WriteLine(s);
       //can do your Regex here
    }
string fileName=“Text.txt”;
列表行=新列表();
使用(StreamReader r=新StreamReader(文件名))
{
弦线;
而((line=r.ReadLine())!=null)
{
行。添加(行);
}
}
foreach(行中的字符串s)
{
控制台。写入线(s);
//你能在这里做正则表达式吗
}

示例数据将有助于理解问题所在:当行不在任何给定的换行符处且没有分隔符时,如何知道行的结束位置?OP表示,行不一定在换行符处结束,但ReadLine将一直读取到下一个换行符或EOF。我怀疑OP在谈论换行时的意思是\n在这种情况下,我担心您的代码会失败。感谢您的快速响应。主要问题是该文件包含大量分散在文本中的换行符,但我需要删除所有这些换行符,然后找到标记该行结尾的正则表达式匹配项。一旦我将数据放入一系列单独的行中,我就可以使用ReadLine方法逐行应用Regex匹配来遍历文件。真正的困难是将数据分成单独的行。我不能提供数据,因为它是机密材料。再次感谢。也许可以尝试将整个文件加载到字符串中(StreamReader:ReadToEnd()),然后使用string:Remove(x)删除不需要的换行符/字符,然后string:Split(x)将字符串拆分为数组(其中x分隔符)。非常感谢您的建议。我已经使用ReadToEnd()方法将整个文件读入StreamReader。我可以通过String.remove()方法删除换行符。请您澄清一下,我如何(以及以什么字符)将文件拆分成一个数组?再次感谢。你必须决定扮演什么角色。这将打印字符串的ascii码。分析您的文件(字符串)并查看要在何处使用单独的行:var chArr=s.tocharray();对于(int i=0;i