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

时间:2017-01-11 08:40:54

标签: c# c#-4.0 c#-3.0 c#-2.0

我有 .asc 文件,其中有1000行。行中的每列具有固定长度并且由一个空格分隔。我想阅读从296位置开始并在连续326位置结束的电子邮件ID列。

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

2 个答案:

答案 0 :(得分:2)

这可能适合你。我只是在文件中阅读电子邮件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());
}

答案 1 :(得分:1)

假设这是一个大文本文件,你可以这样做:

        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());
                }

         }