none
请George.Wuyazhe MVP版主指点 RRS feed

  • 问题

  • George.WuyazheMVP版主你好:看了你的正则表达式,很受启发,今天到图书馆借到了"精通正则表达式(第3板)"书比较厚,要学完还需要一段时间.在这里再次向你请教:我想使T02D0.8至%的文本保存到T02D0.8为文件名的文件中,其余类似.现在自动生成的文件名是D0,D1,D2.要如何修改下面的程序.程序中的写文件的路径是我摸索出来的,也能用,但不知正宗的写法是怎样的,谢谢你的答复.
    T02D0.8
    .
    .
    .
    .
    .
    %
    T03D1.8
    .
    .
    .
    .
    .
    .
    %
    T04D2.8
    .
    .
    .
    .
    .
    %
    string s = File.ReadAllText(@"E:\铣文件保存夹\demo01.txt");
    foreach (Match m in Regex.Matches(s, @"(?sn)T\d+(?<file_name>\S+)\s*(?<data>((?!(?m:^)T\d+).)+)"))
    {
      File.WriteAllText(@"e:\铣文件保存夹\" + m.Groups["file_name"].Value, m.Value ); 
    } 
    

    杲大胜 ...........勤!能!补!拙!........ 勤!勤!勤!.............
    2011年4月23日 12:12

答案

  • 最近晕晕乎乎的。。

    以为看明白了。看你回复,仔细又看了一次。要T那行做文件名是吧。这样

    string s = File.ReadAllText(@"demo01.txt");
    foreach (Match m in Regex.Matches(s, @"(?sn)(?<file_name>T\d+D\d+(\.\d+)?\S+)\s*(?<data>((?!(?m:^)T\d+).)+)"))
    {
      File.WriteAllText(m.Groups["file_name"].Value, m.Value, Encoding.Default);
    }
    

     

     


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    • 已标记为答案 杲大盛 2011年4月26日 2:14
    2011年4月26日 0:38
    版主

全部回复

  • 没问题,这样可以啊。

    或是你知道是数字。可以用

    (?sn)T\d+(?<file_name>\d+(\.\d+)?)\S+\s*(?<data>((?!(?m:^)T\d+).)+)


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年4月25日 2:49
    版主
  • 后面的"))是我加的,不加会出错,加了也不对,请指点,感谢!

    string s = File.ReadAllText(@"E:\铣文件保存夹\demo01.txt");         
    foreach (Match m in Regex.Matches(s,@"(?sn)T\d+(?<file_name>\d+(\.\d+)?)\S+\s*(?<data>((?!(?m:^)T\d+).)+)"))
    {
          File.WriteAllText(@"e:\铣文件保存夹\" + m.Groups["file_name"].Value, m.Value,,Encoding.Default);            
    }


    杲大胜 ...........勤!能!补!拙!........ 勤!勤!勤!.............
    2011年4月25日 6:41
  • 编译运行了一下。这样可以的。

    string s = File.ReadAllText(@"demo01.txt");
    foreach (Match m in Regex.Matches(s, @"(?sn)T\d+(?<file_name>D\d+)\S+\s*(?<data>((?!(?m:^)T\d+).)+)"))
    {
      File.WriteAllText(m.Groups["file_name"].Value, m.Value, Encoding.Default);
    }
    


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年4月25日 7:43
    版主
  • 上面的语句转换出来的文件名还是D0,D1,D2.

    用下面的语句转换出来的文件名,小数点没有了,小数点后面的也没有了,但接近我的意思了,只要把后面的转出来就可以了,辛苦你了.
    string s = File.ReadAllText(@"demo01.txt");
    foreach (Match m in Regex.Matches(s, @"(?sn)(?<file_name>T\d+\S+)\s*(?<data>((?!(?m:^)T\d+).)+)"))
    {
          File.WriteAllText(m.Groups["file_name"].Value, m.Value, Encoding.Default);
    }


    杲大胜 ...........勤!能!补!拙!........ 勤!勤!勤!.............

    2011年4月25日 10:30
  • 最近晕晕乎乎的。。

    以为看明白了。看你回复,仔细又看了一次。要T那行做文件名是吧。这样

    string s = File.ReadAllText(@"demo01.txt");
    foreach (Match m in Regex.Matches(s, @"(?sn)(?<file_name>T\d+D\d+(\.\d+)?\S+)\s*(?<data>((?!(?m:^)T\d+).)+)"))
    {
      File.WriteAllText(m.Groups["file_name"].Value, m.Value, Encoding.Default);
    }
    

     

     


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    • 已标记为答案 杲大盛 2011年4月26日 2:14
    2011年4月26日 0:38
    版主
  • 几天来你为我想了许多办法,答复我的提问,我也感到不好意思了.再次感谢你的无私帮助,好人有好报!


    杲大胜 ...........勤!能!补!拙!........ 勤!勤!勤!.............
    2011年4月26日 2:18