2011-10-27 7 views
1

私は初心者です、そしてIf文は私の弱点です。私は特定のフォルダにあるファイル名を表示するシンプルなプログラムを持っています。ただし、ファイルによってはLIFTで始まる行がある場合があります。特定の行を持つファイルをキャッチし、ファイル名を別の色(好ましくは赤色)で表示したい。これまで私が持っているものは次のとおりです。ありがとう!Ifステートメントヘルプ。特定の基準とは色が異なります

public partial class ShippedOrders : System.Web.UI.Page 
{ 
    class Program 
    { 
     static void Main() 
     { 
      string[] array1 = Directory.GetFiles(@"C:\Kaplan\Replies\"); 
      string[] array2 = Directory.GetFiles(@"C:\Kaplan\Replies\", "*.REP"); 
      Console.WriteLine("---Files:---"); 
      foreach (string name in array1) 
      { 
       Console.WriteLine(name); 
      } 
      Console.WriteLine("---REP Files: ---"); 
      foreach (string name in array2) 
      { 
       Console.WriteLine(name); 
      } 
     } 
    } 
} 
+0

ファイル名やファイル自体について話していますか? –

+1

なぜASP.Netのコンソールに書き込んでいますか?ファイル内の – SLaks

+0

と@SLaks;はい。 – javasocute

答えて

2

Directory.GetFiles(directoryPath)は、そのディレクトリ内のファイル名(フルパス)を示す文字列の配列を返します。返される文字列配列を使用して、実際に各ファイルを開いて読み込まなければなりません。ループで各ファイルを1行ずつ読み込み、 "LIFT"で始まる行があるかどうかをテストします。

また、このWebページのコードビハインドを設定する方法は、ファンキーです。あなたはページの部分クラスの中でクラスを宣言しています。このようなあなたのコードを設定してみてください:

public partial class ShippedOrders : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.goFiles(); 
    } 

    public void goFiles() 
    { 
     string[] array1 = Directory.GetFiles(@"C:\Kaplan\Replies\"); 
     string[] array2 = Directory.GetFiles(@"C:\Kaplan\Replies\", "*.REP"); 
     System.IO.StreamReader file = null; 
     string line = ""; 
     bool hasLIFT = false; 

     Response.Write("---Files:---<br/>"); 
     foreach (string name in array1) 
     { 
      file = new System.IO.StreamReader(@name); 
      while((line = file.ReadLine()) != null) 
      { 
       if(line.StartsWith("LIFT")) 
       { 
        hasLIFT = true; 
        break; 
       } 
      } 
      if(hasLIFT) 
      { 
       Response.Write("<span style=\"color:Red;\">" + name + "</span><br/>"; 
       hasLIFT = false; 
      } 
      else 
       Response.Write(name + "<br/>"; 
     } 
     //and can do the same for other array 
    } 
} 
+0

while((line = reader.ReadLine())!= null) { if(行。StartsWith( "LIFT")) Console.ForegroundColor = Console.Color.Red; シュレッダーコードと移行コードの両方があります。 私はこれで正しい道にいるのですか? – javasocute

+0

@ javasocute私の更新を参照してください。私はページ要求の応答であなたのテキストを書くためにコンソールに書きかけを変更しました。これは、あなたが探している結果を得るのを助けるはずです –

+0

@ javasocuteあなたのページのコードビハインドでコードを正しく設定するのに役立つ別のアップデートをしました。 –

0

あなたのforeachループ内で、次のように行うことができます。 if(name.contains("LIFT")) { //make red. }

それはしかし、文字列(名前)は、文字列が含まれている場合にのみチェックするという問題があるんLIFTであり、文字列がファイル名の先頭にない場合は除きます。 LIFTがファイル名の先頭に入っているかどうか確認するには、Trimメソッドのいくつかを使用する必要があります。

1

コンソール出力の色は、Console.ForegroundColorプロパティを使用して変更できます。

ファイルに必要なテキストが含まれているかどうかを確認するには、ファイルを開いてファイルをスキャンする必要があります。

次に、この操作を行います。

if (fileContainsText) Console.ForegroundColor = ConsoleColor.Red; 
else Console.ForegroundColor = ConsoleColor.Gray; 
Console.WriteLine(name); 

EDIT

を私はあなたがASP.NETサーバーページ内のコンソールに書き込みをしようとしていた気付かなかった...その場合には次のようにする必要がありどのような種類のアプリケーションを作成しているのかを教えてください...コンソールアプリケーション、WebApplication、またはWebサイト...それは依存しています。

Consoleの使用は、Webアプリケーションには適していません。

EDIT 2

ところで、あなただけのコンソールアプリケーションでConsoleを使用することができます。コンソールアプリケーションは、Webアプリケーションとは異なるスタンドアロンのWindowsアプリケーションです。

あなたが新しいプロジェクトウィンドウで、コンソールアプリケーションを作成したい場合、あなたは、あなたがコンソールアプリケーションと呼ばれるプロジェクトの種類を見つけることができ、Windowsのカテゴリの下でそれを見つけることができます。

関連する問題