使用c#将文本文档划分为几个部分

本文关键字:几个 文本 文档 划分 使用 | 更新日期: 2023-09-27 18:15:04

我正在解析一个具有半已知重复结构的文本文件。有一个标题(1行),一个子标题(1行或2行),和一个内容区域(任意#行)。文档中每个条目的格式如下:

<>之前=========================标题文本1=========================副标题Text1副标题Text2=========================第一行内容第2行…第8行=========================标题文字2=========================副标题Text1副标题Text2=========================第一行内容第2行…第6行之前

我想每个部分都是在一个唯一的对象,每个有3部分…比如

<>之前section1.headsection1.subHeadsection1.contentsection2.headsection2.subHeadsection2.content之前

我能想到的完成这一任务的唯一方法涉及大量的ifwhile语句。是否有一种有效的方法来做到这一点?

我最初尝试在JScipt中编写一些代码,但我正在阅读RTF文件,c#提供了一种将RTF转换为纯文本的简单方法。它工作得不是很好,我一直跳过一些分隔符,并且会在文件末尾得到一个错误。

page = new Array();
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile("test.rtf");
is = f.OpenAsTextStream( forReading, -2 );
var count = 0;
while( !is.AtEndOfStream ){
   page[count] = is.ReadLine();
   count++; ;
}
is.Close();
WScript.Echo( page[0].text);
var item = [];
var section = 0;
var i = 0, k = 0;
while (i < page.length) {
item[k] = {};
    if (!page[i].indexOf("=====")) { 
        i++;    
        item[k].head = page[i];
        i+=2;
        while(page[i].indexOf("=====")) {   // WScript.Echo( "index = " + i + " "+ page[i] +"'n" + "Next index = " + (i+1) + " "+ page[i+1] +"'n" );
            item[k].subHead += page[i];
            i++;
        }
        k++;
    } 
    i++;
}

使用c#将文本文档划分为几个部分

如果您想在If上切割,您可以实现一个将每行提交到当前状态的状态模式。

http://en.wikipedia.org/wiki/State_pattern