0

我需要从文本文件中提取一些数据并插入到 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

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

4

5 回答 5

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"依此类推。

于 2013-05-06T10:57:30.103 回答
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
于 2013-05-06T10:56:08.483 回答
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);
            }
于 2013-05-06T10:55:11.810 回答
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();
        }
    }

然后我使用分隔符 (,) 分割了这一行

于 2013-05-07T04:39:28.923 回答
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] : "";
    }
于 2015-07-21T06:30:14.773 回答