有个项目要对txt文件的内容进行重新排版,调整。比如一个txt文件有如下内容:发表时间:2009-09-09 发表人hugo 文章内容:
文章标题:我要排序
这个文件的内容是乱的。
现在要通过程序,就是要编写程序,先读取这个txt文件,然后自动排版好。
排版后的结果是:
文章标题:。。
发表人:。。
发表时间:。。
文章内容:
就是提取文件的内容然后重新按需要去排版,有什么思路或方法?
HELLP

解决方案 »

  1.   

    假设那几个的顺序是固定的,那么就可以用一句代码搞定:string result=System.Text.RegularExpressions.Regex.Replace("你的文本内容","(?s)(发表时间.*?)(发表人.*?)(文章内容.*?)(文章标题.*?)(?=发表时间|$)",@"$4\r\n$3\r\n$1\r\n$2\r\n");
      

  2.   

    最初想法与此相同,有空可以测试一下min_jie的做法。
      

  3.   

    1.把全部内容读出来
    2.分析用正则表达式发表时间:([\S\s]*?)发表人([\S\s]*?)文章内容:([\S\s]*?)文章标题:([\S\s]*?)这样匹配一组
      

  4.   

    min_jie 果然厉害
    看他好久了
      

  5.   

    UP
    string result=System.Text.RegularExpressions.Regex.Replace("你的文本内容","(?s)(发表时间.*?)(发表人.*?)(文章内容.*?)(文章标题.*?)(?=发表时间|$)",@"$4\r\n$3\r\n$1\r\n$2\r\n");
      

  6.   


    还是不是很明白如何匹配。
    假设我有一个string content="发表人hugo 文章内容:这个文件的内容是乱的。 
    现在要通过程序,就是要编写程序,先读取这个txt文件,然后自动排版好。发表时间:2009-09-09  
    文章标题:我要排序"匹配结果为string result =“”;如何用content 匹配成想要的result?  顺序可以假设是一楼的顺序
      

  7.   

    主要是不知道如何匹配:
    string result =
                System.Text.RegularExpressions.Regex.Replace(content, "(?s)(发表时间.*?)(?=发表人|文章内容|文章标题|发表时间)",“这里写什么?”);
      

  8.   

    你要是不考虑【】这些字符的话,可以这样:
    FileStream fstream=File.OpenRead("*.txt的url");
    long filesize=fstream.Length;
    byte[] arr=new byte[filesize];
    UTF8Encoding data=new UTF8Encoding(true);fstream.Read(arr.0,arr.Length);string content=data.GetString(arr);
    string delim=":";
    char[] delimiter=delim.ToCharArray();
    string[] apilt=null;
    for(int i=1;i<content.Length;i++)
    {
       spilt=text.Spilt(delimiter,i);
    }
    将字符串根据【:】分割 成多个,再把结果放进Spilt数组里
    再把它逐个写进 *.txt 中,若要加【】可以想办法用循环给每个成员+【】不知道对你有没有帮助?+"..."