2016-10-03 5 views
0

私は現在、フィルタ処理されたtxtをリストに保存してロードしてtxtファイルをフィルタリングする必要があるプロジェクトで作業しています。現時点ではフィルタは動作していますが、.txtファイルの順序は維持されていません。リスト/ .Txtファイルをフィルタリングする

tryブロックが前に実行されているためにこれが起こっている理由はわかっていますが、私のコードをより効率的にし、必要な行を順番に保存する方法があるのだろうかと思いました彼らは読まれる。

私はパターン変数を1つの変数に保存されている場合、それはまた、より良いかもしれないと思う、しかし、私は、文字列の両方を兼ね備えしようとすると、Regax.Matchが動作しないよう、それらがフォーマットされなければならないかを確認していません。あなたは、送信パターンとを別々のgetパターンを検索するので、あなたの出力が発注されていません述べたように

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Text.RegularExpressions; 

namespace program 
{ 
internal class Program 
{ 
    private static void Main(string[] args) 
    { 
    var inputFile = File.ReadAllText(@"C:\olive.txt"); 

    Filter(inputFile); 
    } 

    public static void Filter(string fileToBeFiltered) 
    { 
    var sendList = new List<string>(); 
    Match m; 
    var sendPattern = @"(SEND.+)"; 
    var getPattern = @"(GET.+)"; //+ "(SEND.+)"; 


    try 
    { 
     m = Regex.Match(fileToBeFiltered, getPattern); 
     while (m.Success) 
     { 
      var add = m.Groups[1].ToString(); 
      sendList.Add(add); 
      m = m.NextMatch(); 
     } 
    } 
    catch (RegexMatchTimeoutException) 
    { 
     Console.WriteLine("The matching operation timed out."); 
    } 

    try 
    { 
     m = Regex.Match(fileToBeFiltered, sendPattern); 
     while (m.Success) 
     { 
      var add = m.Groups[1].ToString(); 
      sendList.Add(add); 
      m = m.NextMatch(); 
     } 
    } 
    catch (RegexMatchTimeoutException) 
    { 
     Console.WriteLine("The matching operation timed out."); 
    } 


    foreach (var value in sendList) 
     Console.WriteLine(value); 
    Console.WriteLine(); 
    } 
} 
} 
+0

これはむしろデバッグ目的のためです。改善のためにhttp://codereview.stackexchange.com/を試してみてください –

答えて

0

。あなたのパターンを変更します。

var pattern = @"((SEND.+)|(GET.+))"; 

今すぐ単一のループとセンドと一致またはパターンファイルの順にリストに追加されます取得セグメントを残します。

編集:もう1組のカッコが追加されました。

+0

ありがとう、巨大な助けてください。 –

関連する問題