Proste filtrowanie tablicy stringów w konsoli

0

Witam!

Piszę program filtrujący tablice stringów zawierajace dane o owocach.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Owoce
{
    class Program
    {
        static void Main(string[] args)
        {
            /////////////////////////////////////// tablica strngów zawierajaca poszczególne owoce
            string[] owoce = { 
								 "gruszka",
								 "sliwka",
								 "jablko",
								 "pomarancza",
								 "granat",
								 "brzoskwinia",
								 "kiwi",
								 "mango",
								 "mandarynka",
								 "banan",
								 "ananas",
								 "cytryna",
								 "pomidor",
								 "czeresnia",
								 "wisnia",
								 "truskawka"
							 };
            ////////////////////////////////////////////////////////// koniec definicji tablicy owoce


            string fraza;
            int stala = 3;
            int licznik =1;

            ConsoleKeyInfo klawisz;
            Console.WriteLine("Uzytkowniku podaj fraze: "); // wczytujemy jakas fraze od uzytkownika

            do
            {
                
                klawisz = Console.ReadKey();

                fraza = Console.ReadLine();
                int num = fraza.Length;


               
                    while (num >= 3)
                    {
                        foreach (var item in owoce)
                        {
                            
                            if (item.Contains(fraza) && licznik <= stala)
                            {
                               
                                Console.WriteLine(item);
                                licznik++;
                            }

                        }
                        break;
                    }
                    continue;
                }
            while (true);

           
            
            Console.ReadLine();
        }
    }
}

 

Program powinien:

-dopiero po minimum 2 znakach rozpoczyna sie szukanie, czyszczenie ekranu na bieŻąco
-podswietlenie danej frazy na kolor

Proszę o pomoc:)

Z góry dzięki.

0

Chodzi mi głównie o to dynamiczne filtrowanie, ja wpisuje np 3 pierwsze znaki typu ban i powinny wyswietlic sie wszystkie wyrazy z tablicy zaczynajace sie od tej frazy, i tak sie dzieje ale tylko raz bo ekran mi sie nie chce czyscic :/ jak to zrobic bez przerywania programu,

0

Tu wywalilem nie potrzebne rzeczy

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;



namespace Owoce
{
    class Program
    {
        static void Main(string[] args)
        {
            /////////////////////////////////////// tablica strngów zawierajaca poszczególne owoce
            string[] owoce = { 
								 "gruszka",
								 "sliwka",
								 "jablko",
								 "pomarancza",
								 "granat",
								 "brzoskwinia",
								 "kiwi",
								 "mango",
								 "mandarynka",
								 "banan",
								 "ananas",
								 "cytryna",
								 "pomidor",
								 "czeresnia",
								 "wisnia",
								 "truskawka"
							 };
            ////////////////////////////////////////////////////////// koniec definicji tablicy owoce
            
            string fraza;
            int stala = 3;
            int licznik =1;
                        
            Console.WriteLine("Proszę podać frazę: "); // wczytujemy jakas fraze od uzytkownika

            do
            {
                               
                fraza = Console.ReadLine();
                int num = fraza.Length;
                                               
                    while (num >= 3)
                    {
                        foreach (var item in owoce)
                        {
                            if (item.Contains(fraza) && licznik <= stala)
                            {
                               
                                Console.WriteLine(item);
                                licznik++;
                            }
                        }
                        break;
                    }
                    continue;
                }
            while (true);
                     
                       
        }
    }
}

0

Już to prawie mam tylko mam problem z czyszczeniem i tymi kolorami.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;



namespace Owoce
{
    class Program
    {
        static void Show()
        {
            Console.WriteLine("Proszę podać frazę: "); // wczytujemy jakas fraze od uzytkownika
            Console.Clear();
        }

        static void Main(string[] args)
        {
            /////////////////////////////////////// tablica strngów zawierajaca poszczególne owoce
            string[] owoce = { 
								 "gruszka",
								 "sliwka",
								 "jablko",
								 "pomarancza",
								 "granat",
								 "brzoskwinia",
								 "kiwi",
								 "mango",
								 "mandarynka",
								 "banan",
								 "ananas",
								 "cytryna",
								 "pomidor",
								 "czeresnia",
								 "wisnia",
								 "truskawka"
							 };
            ////////////////////////////////////////////////////////// koniec definicji tablicy owoce
           
            string fraza;
            int stala = 3;
            int licznik =1;
            char[] FiltrowaneZnaki = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'w', 'x', 'y', 'z' };


            Show();
            
            do
            {
                Console.Clear();          
                fraza = Console.ReadLine();
                int num = fraza.Length;
                                               
                    while (num >= 3)
                    {
                        foreach (var item in owoce)
                        {
                            if (item.Contains(fraza) && licznik <= stala)
                            {
                                fraza.TrimStart(FiltrowaneZnaki);
                                Console.Write(fraza);
                                                          
                                licznik++;
                            }
                            
                        }
                        break;
                        
                    }
                    continue;
                    
                }
            while (true);
                       
        }
    }
}


 
0
using System;

class cs
{
	static void Main()
	{
		ConsoleColor oldColor = Console.ForegroundColor;

		Console.Write("Ala ");
                Console.ForegroundColor = ConsoleColor.Yellow;
		Console.Write("ma ");
		Console.ForegroundColor = ConsoleColor.Cyan;
		Console.WriteLine("kota");

		Console.ForegroundColor = oldColor;

	}
}
0

Dzięki ale nie o to mi chodzilo ;d

Potrzebuje w tym programie poprawić(udoskonalic) 2 rzeczy:

a) Jak dodać tutaj takie filtrowanie ktore działa na zasadzie autocomplete od googla? (Czyli wpisuje 3 pierwsze znaki frazy i wyswietlaja mi sie poszczegolne indeksy tablicy ktore zawieraja te znaki, + dodatkowo wyczyscic ekran przy każdej zmianie znaku.

b) A znaki które wpisuje zeby wyrożniały się np jakims kolorem (powiedzmy ,że żółtym)

Bardzo prosze o pomoc bo męcze się już z tym od 2 dni :/

0

Zatrzymałem się na tym momencie:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Filtrowanie
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] OWOCE = { 
								 "gruszka",
								 "sliwka",
								 "jablko",
								 "pomarancza",
								 "granat",
								 "brzoskwinia",
								 "kiwi",
								 "mango",
								 "mandarynka",
								 "banan",
								 "ananas",
								 "cytryna",
								 "pomidor",
								 "czeresnia",
								 "wisnia",
								 "truskawka"
							 };

            string fraza;
            int stala = 3;
            int licznik = 1;
            int dlugosc=0;

        poczatek:
            
            ConsoleColor oldColor = Console.ForegroundColor;
            Console.WriteLine("Prosze podać frazę: ");
            Console.WriteLine("------------------------");
            Console.WriteLine();
            do
            {
                fraza = Console.ReadLine();
                dlugosc = fraza.Length;
              
                while(dlugosc >= 3)
                {
                    foreach (var wyrazenie in OWOCE)
                    {
                        if (wyrazenie.Contains(fraza) && licznik <= stala)
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine(wyrazenie);
                            licznik++;

                            if (Console.ReadKey().Key == ConsoleKey.Enter)
                            {
                                Console.Clear();
                                goto poczatek;
                            }
                            
                        }
                    }
                    break;
                }
                continue;

            } while (true);
            
        }
    }
}

 
1
 Console.WriteLine("wprowadz szukana fraze: ");
            string fraza;
            fraza = Console.ReadLine();
            int w;
            int licznik = 0;
            foreach (string item in owoce)
            {
                
                if (item.Contains(fraza))
                {
                    
                    
                    //Console.WriteLine(item);
                   
                    string[] podzial = item.Split(new string[] {fraza}, StringSplitOptions.None);
                    foreach (string sad in podzial)
                    {

                        Console.Write(sad);
                        w = podzial.Length;
                        if (w > licznik+1)
                        {
                            licznik++;
                            Console.BackgroundColor = ConsoleColor.Red;
                            Console.Write(fraza);
                            Console.ResetColor();
                        }                 
                        
                        
                    }

                    Console.WriteLine();                   
                    licznik = 0;
                }
                else
                {
                    Console.WriteLine(item);
                }
             
                
            }

może coś takiego?

0

Jak najbardziej :)

Ale tutaj jest pełne rozwiązanie :)


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Autocomplete
{
    class Program
    {
        static void Main(string[] args)
        {

          
            string[] owoce = { 
                              "gruszka",
                              "śliwka",
                              "jablko",
                              "pomarancza",
                              "granat",
                              "brzoskwinia",
                              "kiwi",
                              "mango",
                              "mandarynka",
                              "banan",
                              "ananas",
                              "cytryna",
                              "pomidor",
                              "czereśnia",
                              "wisnia",
                              "truskawka"
                              };

            int j = 3;
            string fraza="";
            ConsoleKeyInfo X;
            do
            {             
                Console.Clear();
                do
                {
                    int i = 1;
                    X = Console.ReadKey();
                    if (X.Key == ConsoleKey.Backspace)
                    {
                        
                        if(fraza!="")
                            fraza = fraza.Remove(fraza.Length-1,1);
                        Console.Clear();
                        Console.Write("Search: {0}\n", fraza);
                        
                    }
                    else
                    {
                        fraza += X.KeyChar.ToString();
                        Console.Clear();
                        Console.Write("Search: {0}\n", fraza);
                    }
                    int num = fraza.Length;

                    int next = 0;
                        foreach (var item in owoce)
                        {
                            
                            if (item.Contains(fraza) && i <= j && fraza.Length>1)
                            {
                                next = 0;
                                foreach (var item2 in item)
                                {
                                    if (next == fraza.Length)
                                        Console.Write(item2);
                                    else{

                                    if (item2.ToString() == fraza.Substring(next, 1))
                                    {
                                        Console.BackgroundColor = ConsoleColor.Yellow;
                                        Console.Write(item2);
                                        Console.ResetColor();
                                        next++;
                                    }       
                                    else
                                    {
                                        Console.Write(item2);
                                    }}
                                }
                                i++; 
                                Console.WriteLine();
                            }
                        }
                        
                    

                } while (!Console.KeyAvailable && X.Key!=ConsoleKey.Escape );
               
            }while(X.Key!=ConsoleKey.Escape);

            

            Console.ReadLine();
        }
    }
}


 

1 użytkowników online, w tym zalogowanych: 0, gości: 1