从文本文件中提取数据

时间:2013-05-06 10:48:27

标签: c#

我需要从文本文件中提取一些数据并插入excel表中的列。如果已知字符串的行和长度,我知道如何执行此操作。

try
{
    using (System.IO.StreamReader sr = new System.IO.StreamReader("test.txt")
    {
        string line;
        while ((line = sr.ReadLine()) != null)
        {
            listSNR.Items.Add(line.Substring (78,4));
        }
    }
}

但是特定的文本文件很复杂,无法提供起始索引或长度。但是该行的起始字(PCPU01)是已知的。 例如:PCPU01,T2716,0.00,0.01,0.00,0.00

输出: T2716 0 0.01 0 0

在这种情况下,有人可以让我知道如何提取文本吗?

5 个答案:

答案 0 :(得分:2)

using(System.IO.StreamReader sr = new System.IO.StreamReader("test.txt"))
{
    string line;
    while((line = sr.ReadLine()) != null)
    {
        string[] split = line.Split(',');
        //...
    }
}

split[0]将返回"PCPU01"split[1] "T2716"等等。

答案 1 :(得分:1)

您可以将一个字符串拆分为一个字符串数组,由给定字符分隔。这样,您可以用逗号分割源字符串,并使用生成的字符串来构建输出。例如:

string source = "PCPU01,T2716,0.00,0.01,0.00,0.00";
string[] parts = source.Split(',');
StringBuilder result = new StringBuilder();

result.Append(parts[1]); // The second element in the array, i.e. T2716
result.Append(" ");
result.Append(parts[2]); // 0.00
... // And so on...
return result.ToString() // return a string, not a StringBuilder

答案 2 :(得分:0)

我希望这会有所帮助。您可能需要根据自己的需要进行调整。但这是一个更高级别的代码,可以让您全面了解从记事本中提取数据的信息。

DialogResult result = openFileDialog.ShowDialog();

            Collection<Info> _infoCollection = new Collection<Info>();
            Collection<string> listOfSubDomains = new Collection<string>();

            string[] row;
            string line;

            // READ THE FILE AND STORE IT IN INFO OBJECT AND STORE TAHT INFO OBJECT IN COLLECTION
            try
            {
                using (StreamReader reader = new StreamReader(openFileDialog.FileName))
                {
                    while((line = reader.ReadLine()) != null)
                    {
                        Info _info = new Info();
                        row = line.Split(' ');

                        _info.FirstName = row[0];
                        _info.LastName = row[1];
                        _info.Email = row[2];
                        _info.Id = Convert.ToInt32(row[3]);

                        _infoCollection.Add(_info);

                    }
                }

catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

答案 3 :(得分:0)

感谢您的回答。我想要的是识别文本文件中的特定行并将行拆分为列。所以我可以通过调用GetLine方法来做到这一点:

string line15=GetLine(@"test.txt",15);
public string GetLine(string fileName, int line)
    {
        using (System.IO.StreamReader ssr = new System.IO.StreamReader("test.txt")) 
       //using (var ssr = new StreamReader("test.txt"))
        {
            for (int i = 1; i < line; i++)
                ssr.ReadLine();
            return ssr.ReadLine();
        }
    }

然后我使用分隔符(,)

分割了这一行

答案 4 :(得分:0)

这是我在C#中的方法。它需要一个字符串输入(你可以从文本文件中获取)和一个你想要获得哪一行的int。然后它将给定分隔符char处的字符串分隔为一个列表,然后再读出该列表。如果给定的行号低于创建的列表的计数,则返回该条目。

    public string GetLine(string multiline,int line)
    {
        List<string> lines = new List<string>();
        lines = multiline.Split('\n').ToList<string>();

        return lines.Count >= line ? lines[line] : "";
    }