İfade yardımında bulunursa; belirli kriterlere göre farklı renk

Yeni başlayan biriyim ve eğer ifadeler zayıflığım ise. Belli bir klasörde bulunan dosya adlarını gösteren basit bir program var. Ancak, bazı dosyalar LIFT ile başlayan satırlara sahip olabilir. Belirli bir çizgiye sahip olan dosyaları yakalamak ve dosya adını farklı bir renkte (tercihen kırmızı) görüntülemek istiyorum. Şimdiye kadar sahip olduğum şeyler: Herhangi bir yardım büyük takdir edilecektir! Teşekkürler!

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
Dosya adı veya dosyanın kendisi hakkında konuşuyor musunuz?
katma yazar Mitchel Sellers, kaynak
ASP.Net'de neden konsola yazıyorsunuz?
katma yazar SLaks, kaynak
dosya içinde. ve @SLaks; Evet.
katma yazar javasocute, kaynak
@javasocute - Bir System.Web.UI.Page sınıfı içinde Console'a yazı yazmamalısınız, kodunuzu değiştirin, böylece daha anlamlı olur, ifadeler hakkında tam olarak ne anlamadınız?
katma yazar Security Hound, kaynak

3 cevap

Directory.GetFiles (directoryPath), bu dizindeki dosya adlarını (tam yollar) listeleyen bir dizi diziyi döndürür. Döndürülmüş dize dizisini kullanarak her dosyayı gerçekten açmanız ve okumanız gerekecek. Her dosya hattını döngü içinde sırayla okuyun ve herhangi bir satırın "LIFT" ile başlayıp başlamadığını test edin.

Ayrıca bu web sayfası için kodunuzun arkaplan şekliniz de eğlenceli. Sayfanın kısmi sınıfı içinde bir sınıf bildiriyorsunuz. Kodunuzu şu şekilde kurmayı deneyin:

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
katma
@javasocute güncellememi gör. Metninizi sayfa isteğinin cevabına yazmak için yazıya değiştirdim. Bu, aradığınız sonuçları almanıza yardımcı olur
katma yazar Nick Rolando, kaynak
@javasocute kodunuzu sayfanızın arkasındaki kodda düzgün bir şekilde ayarlamanıza yardımcı olacak başka bir güncelleme yaptım.
katma yazar Nick Rolando, kaynak
@javasocute Peki sanırım bu dosya adlarını yazmanızın nedenine bağlı. Çıktıyı Console.WriteLine() 'dan görüyor musunuz? Bunun için konsol için özel bir yazar ayarlamanız gerektiğini düşünüyorum. System.Diagnostics.Debug.WriteLine ("debug deyimi"); hata ayıklayıcısında VS'deki çıkış penceresine yazmak için kullanabilirsiniz. Ancak Response.Write() , sayfanın çıkışını bağımsız olarak sayfada gösterir.
katma yazar Nick Rolando, kaynak
İyi çalışıyorsa ve istediğiniz şeyi alıyorsanız, o zaman, bunun için gidin. @Miguel, orada font rengini değiştirmeye yardımcı olabilir gibi görünüyor. Maalesef, Response ^^ 'ye değiştirdim. Asp.net'de sadece daha yaygın olarak kullanıyorum
katma yazar Nick Rolando, kaynak
while ((line = reader.ReadLine ())! = null) {if (line.StartsWith ("LIFT")) Console.ForegroundColor = Console.Color.Red; Hem öğütücü hem de miguels koduyla. Bununla doğru yolda mıyım?
katma yazar javasocute, kaynak
Tüm yardımlarınız için teşekkürler Shredder, meraklı, neden konsol yerine response.write kullanıyorsunuz. Sanırım tüm bu konsolu ve konsersiz olmayan şeyleri öğrenmem gerek.
katma yazar javasocute, kaynak
Console.Writeline() sadece iyi çalışıyor. Dosya isimleri istediğim gibi görüntülenir. Bu bir web uygulamasıdır, ama sanırım konsol kullanmamalıyım. Bilmiyorum. Bu tür şeylere bakmak zorundayım.
katma yazar javasocute, kaynak

Konsol çıktı rengini Console.ForegroundColor özelliğini kullanarak değiştirebilirsiniz.

Dosyanın istediğiniz metni içerdiğini bilmek için dosyayı açmanız ve dosyayı taramanız gerekir.

Sonra şunu yapın:

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

DÜZENLEME

Bir ASP.NET sunucu sayfası içinde Console'a yazmaya çalıştığınızı farketmedim ... Bu durumda, ne tür bir uygulama oluşturduğunuzu bize söylemeniz gerekir ... bu bir Konsol uygulaması, Web Uygulaması veya Web sitesi ... buna bağlı.

Web uygulamaları için Console kullanımı uygun değildir.

2 EDIT

Bu arada, Konsol 'nu yalnızca konsol uygulamalarında kullanabilirsiniz. Bir konsol uygulaması, bir web uygulamasından farklı olan bağımsız bir pencere uygulamasıdır.

Bir konsol uygulaması oluşturmak istiyorsanız, Yeni Proje penceresinde, Windows kategorisinde bulabilirsiniz, ardından Konsol Uygulaması adlı bir proje türünü bulabilirsiniz.

1
katma

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

dize (name) stringT dizesini içeriyorsa ve dize dosya isminin başlangıcında değilse sadece onu kontrol etmesine neden olur. LIFT dosyasının dosya isminin başında olup olmadığını kontrol etmek isterseniz, bazı Trim yöntemlerini kullanmalısınız.

0
katma