C# 如何使用c从.asc文件中的特定位置读取数据#

C# 如何使用c从.asc文件中的特定位置读取数据#,c#,c#-4.0,c#-3.0,c#-2.0,C#,C# 4.0,C# 3.0,C# 2.0,我有.asc文件,它有1000行。行中的每一列都是固定长度的,并由一个空格分隔。我想读一行中从296位置开始到326位置结束的email id列 有没有办法从.asc文件中读取此类数据?这可能对您有用。我只是在读取文件中的电子邮件ID,不管它是什么扩展名文件,可能是txt或asc。此外,电子邮件地址是否位于其他位置而不是296或326也无关紧要 public void ExtractAllEmails() { string datafrmAsc = File.ReadAllText(Yo

我有.asc文件,它有1000行。行中的每一列都是固定长度的,并由一个空格分隔。我想读一行中从296位置开始到326位置结束的email id列


有没有办法从.asc文件中读取此类数据?

这可能对您有用。我只是在读取文件中的电子邮件ID,不管它是什么扩展名文件,可能是txt或asc。此外,电子邮件地址是否位于其他位置而不是296或326也无关紧要

public void ExtractAllEmails()
{
    string datafrmAsc = File.ReadAllText(YourASCFile); //read File 
    Regex emailRegex = new Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", RegexOptions.IgnoreCase);
    MatchCollection emailMatches = emailRegex.Matches(datafrmAsc);
    StringBuilder sb = new StringBuilder();
    foreach (Match emailMatch in emailMatches)
    {
        sb.AppendLine(emailMatch.Value);
    }
    File.WriteAllText(SomeTxtFile, sb.ToString());
}

假设这是一个大的文本文件,您可以执行以下操作:

        List<string> emailsList = new List<string>();
        int startIndex = 295;
        int endIndex = 325;

        using (FileStream stream = File.Open("c:\\test.asc", FileMode.Open))
        using (StreamReader sr = new StreamReader(stream))
        {
                string line = string.Empty;
                while ((line = sr.ReadLine()) != null)
                {
                    emailsList.Add(line.Substring(startIndex, endIndex - startIndex).Trim());
                }

         }
List emailsList=new List();
int startIndex=295;
int-endIndex=325;
使用(FileStream stream=File.Open(“c:\\test.asc”,FileMode.Open))
使用(StreamReader sr=新StreamReader(stream))
{
string line=string.Empty;
而((line=sr.ReadLine())!=null)
{
Add(line.Substring(startIndex,endIndex-startIndex.Trim());
}
}

什么是“.asc”文件?它使用什么编码?文件中的行真的是固定宽度(以字节为单位)吗?您想从某一行还是所有行中读取?如果没有要解析的文件的示例或描述,是否可以在中使用?尽管位于
Microsoft.VisualBasic.FileIO
名称空间中,但它在c#中仍然非常可用。另一种表达感谢的方式是把答案投上。很乐意帮忙,非常欢迎你。:)谢谢你,尼诺。虽然前面的代码解决了我的问题。但您的代码仍然是位优化的。我有不同的实现方式,所以也会使用您的代码。很高兴我能提供帮助。我的方法更优化了一点(它逐行读取文件,而@Mohit Shrivastava一次加载所有文本),因为您声明有数千行。实际上,我已经定义了批处理大小,以便您的代码符合我的要求。而优化在这里不是指性能,而是指处理方法。