ifステートメントヘルプ。特定の基準とは異なる色

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

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);
            }
        }
    }
}
1
ファイル名やファイル自体について話していますか?
追加された 著者 Mitchel Sellers,
ASP.Netのコンソールに書いているのはなぜですか?
追加された 著者 SLaks,
ファイル内でと@SLaks;はい。
追加された 著者 javasocute,
@javasocute - System.Web.UI.Pageクラス内のConsoleに書き込むべきではなく、あなたのコードを変更して、より意味をなさせるようにしてください。
追加された 著者 Security Hound,

3 答え

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:---
"); 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("" + name + "
"; hasLIFT = false; } else Response.Write(name + "
"; } //and can do the same for other array } }
2
追加された
@ javasocute私の更新を参照してください。私はページ要求の応答であなたのテキストを書くためにコンソールに書きかけを変更しました。これはあなたが探している結果を得るのに役立ちます
追加された 著者 Nick Rolando,
@javasocute私はあなたのページのコードビハインドで適切にコードを設定するのに役立つ別のアップデートをしました。
追加された 著者 Nick Rolando,
@javasocuteまあ、私はそれがあなたがこれらのファイル名を書いている理由によると思う。 Console.WriteLine()の出力も見ていますか?私はそれのためのコンソールのカスタムライターをセットアップする必要があると思う。デバッガでVSの出力ウィンドウに書き込むには、 System.Diagnostics.Debug.WriteLine( "debug statement"); を使用できます。しかし、 Response.Write()は、ページ上の出力をそのまま表示します。
追加された 著者 Nick Rolando,
それがうまく動作し、あなたが望むものを得ているなら、是非、それに行きなさい。 @Miguelのようなフォントの色を変更するのに役立つようです。申し訳ありませんが、Response ^^に変更しました。asp.netでよく使用されています。
追加された 著者 Nick Rolando,
while(Line.ReadLine())!= null){if(line.StartsWith( "LIFT"))Console.ForegroundColor = Console.Color.Red;シュレッダーコードと移動コードの両方で私はこれで正しい道にいますか?
追加された 著者 javasocute,
すべてのあなたの助けに感謝シュレッダー、好奇心、なぜコンソールの代わりにresponse.writeを使用しています。私は、私はこのコンソールとnonconsoleものすべてを学ぶ必要があると思う。
追加された 著者 javasocute,
Console.Writeline()はうまく動作します。ファイル名は私が望むように表示されます。これはWebアプリケーションですが、私はコンソールを使用しないと思います。 Idk。私はそのようなことを調べなければなりません。
追加された 著者 javasocute,

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

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

次にこれを行う:

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

編集

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

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

2を編集

ちなみに、 Console はコンソールアプリケーションでのみ使用できます。コンソールアプリケーションは、Webアプリケーションとは異なるスタンドアロンのWindowsアプリケーションです。

コンソールアプリを作成する場合は、[新しいプロジェクト]ウィンドウで[ Windows ]カテゴリの下にある[コンソールアプリケーション]というプロジェクトタイプを見つけることができます。

1
追加された

You can do like this inside your foreach loop: if(name.contains("LIFT")) { //make red. }

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

0
追加された