如何从c#中的文本文件中提取特定文本

时间:2014-05-19 07:15:14

标签: c# io

enter image description here基本上我有一个文本文件,其中有标题和说明。我想在特定文本框中提取标题,在其他文本框中提取所有描述。 我试过这段代码:

protected void FillForm(object sender, EventArgs e)
{
    string inputString;
    textBoxContents.Text = "";
    using (StreamReader streamReader = File.OpenText(@"E:\file.txt"))
    {
        inputString = streamReader.ReadLine();

        while (inputString != null)
        {
            textBoxContents.Text += inputString + "<br />";
            inputString = streamReader.ReadLine();
        }
    }
}

我得到的是文件的所有内容,但我希望从该文件的文本框中显示一大块文本。

3 个答案:

答案 0 :(得分:2)

  

我有一个文本文件,其中有标题和说明....

似乎对我的文件格式描述;)

我假设你的代码中标题是文本文件的第一行。如果是这种情况,您似乎错过了两个步骤:

  1. 您需要将第一次阅读的值分配到您想要标题的文本框中。

  2. 然后,您需要将 inputString 的值设置为空字符串,或使用另一个变量来保存正文文本的读取。这可确保您不会复制正文中的标题文本。

  3. protected void FillForm(object sender, EventArgs e)
    {
    
        string inputString;
        textBoxContents.Text = "";
        using (StreamReader streamReader = File.OpenText(@"E:\file.txt"))
        {
            inputString = streamReader.ReadLine();
    
    
            //assign inputString value to title text box
            //set inputString value to ""
    
    
            while (inputString != null)
            {
                textBoxContents.Text += inputString + "<br />";
                inputString = streamReader.ReadLine();
            }
        }
    }
    

    希望它有所帮助。

答案 1 :(得分:0)

您可以尝试找到第一行并将其拆分:

string text = File.ReadAllText(@"E:\file.txt");

int positionOfFirstLineEnd = text.IndexOf('\n');

string title = text.Substring(0, positionOfFirstLineEnd);
string description = text.Substring(positionOfFirstLineEnd + 1);

答案 2 :(得分:0)

  

如何从文本文件中提取特定文本

什么是特定的?这是最重要的事情。知道什么使文本具体是什么,这使你能够编写一份代码和平的东西来做正确的工作。

通常,有:

  • 包含特定字符和变体(从前面开始,后面有一行),在此之前的行,之前的行中的文本等等。
  • 行号N。
  • 别的(告诉我们)。

知道您的代码几乎是正确的:

protected void FillForm(object sender, EventArgs e)
{
    textBoxContents.Text = "";
    using (var streamReader = File.OpenText(@"E:\file.txt"))
    {
        string inputString = null;
        int lineNumber;
        do
        {
            inputString = streamReader.ReadLine();
            lineNumber++;
            // this
            // get line number 7
            if(lineNumber == 7)
            {
                 textBoxContents.Text += inputString + "<br />";
                 break;
            }
            // or perhaps this
            // get next line after line containing "Description"
            if(inputString.Contains("Description"))
            {
                 inputString = streamReader.ReadLine();
                 textBoxContents.Text += inputString + "<br />";
                 break;
            }
        } while (inputString != null)
    }
}

P.S。:提示,不要让事件处理程序成为方法。这意味着

void ButtonClick(object sender, EventArgs e)
{
    FillForm();
}