7 svar
390 visningar
CsharpStudent behöver inte mer hjälp
CsharpStudent 80
Postad: 21 dec 2021 21:31

Sökfunktion ToUpper

Hej! i case 3 ligger min sökfuntion, som fungerade bra till jag la in in Console.WriteLine(sökord.ToUpper()); i case 3. Jag vill ha ToUpper funktionen så det inte ska spela någon roll om användare knappar in med stora bokstäver eller ej. Problemet är att sökfunktionen inte alls fungerar när jag lagt in koden för ToUpper. Har lagt in konsollfönster längst ner i koden. Hur ska jag tänka här? 

 //Deklarerar en lista med namnet minBlogg innehållande array
            List<String[]> minBlogg = new List<String[]>();

            //Deklarerar en bool som är true, blir den false, kommer while loop nedan brytas
            bool isRunning = true;

            /*1.Vill bara att Välkommen ska skrivas ut en gång och sätter den därför utanför loop
              2.n för ny rad, t för tabb*/
            Console.WriteLine("\n\tVälkommen! ");

            //Deklarerar While. SÅ LÄNGE bool är true kommer while loop fortsätta.
            while (isRunning)
            { 

              /*1.n för ny rad, t för tabb
                2.Texten nedan skrivs ut som menyval*/
                Console.WriteLine("\n\tGör ett val 1-5: ");
                Console.WriteLine("\n\t[1]Skapa ett inlägg");
                Console.WriteLine("\t[2]Visa sparade inlägg");
                Console.WriteLine("\t[3]Sök bland inlägg");
                Console.WriteLine("\t[4]Radera inlägg");
                Console.WriteLine("\t[5]Avsluta programmet");

              /*1.Deklarerar en int för menyval
                2.Deklarerar en if, för att TryParse ska exekveras om användare skriver annat än 1-5
                3.TryParse returnerar bool true om TryParse lyckas.*/
                int menyVal;
                Int32.TryParse(Console.ReadLine(), out menyVal);

                //Deklarerar en switch för menyVal.
                switch (menyVal)
                {
                    case 1:
                      /*1.Skapar en case 1: start på första kodblocket i switchen
                        2.Initiering av strängvektor med 3 element, platser för: titel, inlägg, datum / tid.
                        3.Deklarerar strängvektorn efter whileloop för att jag vill att användare ska kunna spara flera inlägg,utan att det gamla inlägget skrivs över. Array loopas.
                        4.Skriver ut instruktion till användare.
                        5.Sparar titel i index 0 (första elementet)
                        6.Endast till för att göra texten mer lättöverskådlig
                        6.1.t för tabb n för ny rad*/
                        String[] Inlägg = new String[3];
                        Console.Write("\tAnge en titel för ditt inlägg: ");
                        Inlägg[0] = Console.ReadLine();
                        Console.WriteLine("\n\t-------------------\n\t");

                      /*1.Skriver ut instruktion till användare
                        1.1.Skriver ut instruktion till användare
                        2.Sparar inlägget i index 1 (andra elementet)*/
                        Console.WriteLine("\tSkriv ditt inlägg och tryck enter för att spara : ");
                       
                        Inlägg[1] = Console.ReadLine();
                        
                      //1.Sparar datum/tid i index 2 (tredje elementet)
                        Inlägg[2] = DateTime.Now.ToString();

                      /*1.Sparar titel,inlägg,tid i minBlogg med Addmetoden
                        2.Endast till för att göra texten mer lättöverskådlig
                        2.1.Skriver ut information till användaren
                        3.break; Slut på detta kodblock*/
                        minBlogg.Add(Inlägg);
                        Console.WriteLine("\n\t-------------------\n\t");
                        Console.WriteLine("Ditt inlägg är nu sparat!");
                    break;

                    case 2:
                      /*1.case 2: start på andra kodblocket i switchen
                        2.Skriver ut information till användaren.
                        3.Console.WriteLine(----); Gör det mer överskådligt att läsa inläggen.
                         Nedan är dina skrivna inlägg
                           ----------------------
                          Datum/Tid: Titel: Inlägg
                        4.Foreach loopar igenom alla sparade inlägg i minBlogg*/
                        Console.WriteLine("\n Dina inlägg: \n");
                        Console.WriteLine("\n\t-------------------\n\t");
                        foreach (string[] dittInlägg in minBlogg)
                        
                      /*1.Skriver ut alla arrays: Datum/Tid: Titel: Inlägg: Lagt array 2 först eftersom jag vill ha ut datum och klockslag först.
                        2.break; Avslutar detta kodblock */
                        Console.WriteLine("\n Puplicerat: " + dittInlägg[2] + " \n Titel - " + dittInlägg[0] + " \n Inlägg - " + dittInlägg[1] + "\n");
                   
                        break;
                        
                    case 3:
                    /*1.case 3: Startar detta kodblock.
                      2.Skriver ut information till användare
                      3.Deklarerar en string med variabelnamn sökord, det användare knappar in som sökord
                      4.foreach loopar igenom alla inlägg som finns i variabelnamn minBlogg
                      5.Deklarerar en if, om inlägg med index 0 innehåller sökord eller om inlägg med index 1 innehåller sökord, kommer nästa kodrad exekveras
                      6.Skriver ut text + Datum + Titel + Inlägg.*/
                       
Console.WriteLine("Sök på titel eller del av text: ");
                       string sökord = Console.ReadLine();
                       Console.WriteLine(sökord.ToUpper());
                        //SKAPA TOUPPER TOLOWER, FUNGERAR EJ
                       foreach (string[] inlägg in minBlogg)
                       {

                           if (inlägg[0].Contains(sökord) || inlägg[1].Contains(sökord))
                           {
                               Console.Write("\nSökning gav träffen: " + "\n\t-------------------\n\t" + inlägg[2] + "\n\t" + "Titel:" + inlägg[0] + "\n\t" +"Inlägg:"+ inlägg[1]);
                           }
                       }

                    break;










Nedan ser du konsollfönstret







        Välkommen!

        Gör ett val 1-5:

        [1]Skapa ett inlägg
        [2]Visa sparade inlägg
        [3]Sök bland inlägg
        [4]Radera inlägg
        [5]Avsluta programmet
1
        Ange en titel för ditt inlägg: bloggen

        -------------------

        Skriv ditt inlägg och tryck enter för att spara :
Nästan klar

        -------------------

Ditt inlägg är nu sparat!

        Gör ett val 1-5:

        [1]Skapa ett inlägg
        [2]Visa sparade inlägg
        [3]Sök bland inlägg
        [4]Radera inlägg
        [5]Avsluta programmet
1
        Ange en titel för ditt inlägg: Sökfunktion

        -------------------

        Skriv ditt inlägg och tryck enter för att spara :
Fungerar ej med ToUpper

        -------------------

Ditt inlägg är nu sparat!

        Gör ett val 1-5:

        [1]Skapa ett inlägg
        [2]Visa sparade inlägg
        [3]Sök bland inlägg
        [4]Radera inlägg
        [5]Avsluta programmet
3
Sök på titel eller del av text:
SÖKFUNKTION
SÖKFUNKTION

        Gör ett val 1-5:

        [1]Skapa ett inlägg
        [2]Visa sparade inlägg
        [3]Sök bland inlägg
        [4]Radera inlägg
        [5]Avsluta programmet



Laguna 30422
Postad: 21 dec 2021 21:44

Du gör sökord.ToUpper() och skriver ut det, men sökord.ToUpper() ändrar inte sökord, det returnerar en ny sträng. För att sökord ska ändras får du tilldela sökord den nya strängen, alltså 

sökord = sökord.ToUpper();

CsharpStudent 80
Postad: 21 dec 2021 21:52
Laguna skrev:

Du gör sökord.ToUpper() och skriver ut det, men sökord.ToUpper() ändrar inte sökord, det returnerar en ny sträng. För att sökord ska ändras får du tilldela sökord den nya strängen, alltså 

sökord = sökord.ToUpper();

Okej testade. Tror tyvärr inte jag förstår riktigt var detta ska skrivas in i koden, för jag får inte det att fungera.

CsharpStudent 80
Postad: 21 dec 2021 23:20 Redigerad: 21 dec 2021 23:34

Nu har jag ändrat i koden och den ser ut på följande sätt men nu kan sökfunktionen inte hitta titel på inlägg längre. Den hittar om man söker på en del av ordet i inlägget men inte om man söker på titel. Blir jätteförvirrad nu.

 case 3:
                    /*1.case 3: Startar detta kodblock.
                      2.Skriver ut information till användare
                      3.Deklarerar en string med variabelnamn sökord, det användare knappar in som sökord
                      4.foreach loopar igenom alla inlägg som finns i variabelnamn minBlogg
                      5.Deklarerar en if, om inlägg med index 0 innehåller sökord eller om inlägg med index 1 innehåller sökord, kommer nästa kodrad exekveras
                      6.Skriver ut text + Datum + Titel + Inlägg. Har lagt inlägg[2] först för att det blev en snygg ordning med datum högst upp*/
                       Console.WriteLine("Sök på titel eller del av text: ");
                       string sökord = Console.ReadLine().ToUpper();
                        
                        //SKAPA TOUPPER TOLOWER
                       foreach (string[] inlägg in minBlogg)
                       {

                           if (inlägg[0].Contains(sökord) || inlägg[1].Contains(sökord))
                           {
                               Console.Write("\nSökning gav träffen: " + "\n\t-------------------\n\t" + inlägg[2] + "\n\t" + "Titel:" + inlägg[0] + "\n\t" +"Inlägg:"+ inlägg[1]);
                           }
                       }

                    break;
 Puplicerat: 2021-12-21 23:18:51
 Titel - titel
 Inlägg - inlägg


 Puplicerat: 2021-12-21 23:19:01
 Titel - ny titel
 Inlägg - nytt inlägg


        Gör ett val 1-5:

        [1]Skapa ett inlägg
        [2]Visa sparade inlägg
        [3]Sök bland inlägg
        [4]Radera inlägg
        [5]Avsluta programmet
3
Sök på titel eller del av text:
titel

        Gör ett val 1-5:

        [1]Skapa ett inlägg
        [2]Visa sparade inlägg
        [3]Sök bland inlägg
        [4]Radera inlägg
        [5]Avsluta programmet
CsharpStudent 80
Postad: 21 dec 2021 23:26
Laguna skrev:

Du gör sökord.ToUpper() och skriver ut det, men sökord.ToUpper() ändrar inte sökord, det returnerar en ny sträng. För att sökord ska ändras får du tilldela sökord den nya strängen, alltså 

sökord = sökord.ToUpper();

Behöver jag skapa en ToLower också för att alla inlägg skriven med oavsett stor eller liten bokstav ska hittas?

CsharpStudent 80
Postad: 22 dec 2021 01:18

Testade att ändra en del igen men nu hittar den inga inlägg alls. Vad är det jag missar?

 case 3:
//Ber användaren att göra en sökning.
                        Console.WriteLine("Sök på titel: \n");
                        //Skapar en ny sträng variabel som blir sökningen som matas in av användaren.
                        string sökord = Console.ReadLine();
                        //skapar ytterligare en bool för att göra det enklare för programmet att söka i listan efter det inmatade sökordet.
                        bool sökning = false;
                        //For loopen hjälper oss att bläddra genom varje element.
                        for (int i = 0; i < minBlogg.Count; i++)
                        {   //Använder mig utav en jämförelseoperator. 
                            if (minBlogg[i][0].ToUpper() == sökord.ToUpper())
                            {
                                //Matchar sökordet och listan så får användaren följande meddelande utskrivet på skärmen.
                                Console.WriteLine("Vi kunde hitta ditt inlägg i arkivet " + minBlogg[i][0], minBlogg[i][1]);
                                Console.WriteLine("\nVänligen göra ett nytt menyval.");
                                Console.WriteLine("\n" + "_______________________________________" + "\n\t");
                                sökning = true;
                                
                            }

                        }
                        

                        //Om sökordet inte matchar med listan så får användarens följande utskrivet på sin skärm.
                        if (!sökning)
                        {
                            Console.WriteLine("\nDin söknining gav tyvärr inget resultat. " + "\n" + "Antingen har du sökt på ett inlägg som inte finns sparat i arkivet eller så har det blivit fel i inmatningen, vänligen gör ett nytt försök!");
                            break;
                        }

                        break;

Tillägg: 22 dec 2021 04:40

Nu kan jag hitta titel i alla positioner men den visar också endast titel, inte titel och inlägg. Jag förstår verkligen inte varför. Någon som kan hjälpa mig förstå hur jag ska tänka?

 case 3:

                    
                    
                        //Ber användaren att göra en sökning.
                        Console.WriteLine("Sök på titel: \n");
                        //Skapar en ny sträng variabel som blir sökningen som matas in av användaren.
                        string sökord = Console.ReadLine();
                        //skapar ytterligare en bool för att göra det enklare för programmet att söka i listan efter det inmatade sökordet.
                        bool sökning = false;
                        //For loopen hjälper oss att bläddra genom varje element.

                        for (int i = 0; i < minBlogg.Count; i++)
                        {   // Använder mig utav en jämförelseoperator.
                            // Skapar en extra for loop för att loopa min inre array och göra det möjligt att hitta inlägg i alla positioner.
                            for (int j = 0; j < minBlogg[i].Length; j++)
                            {
                                if (minBlogg[i][j].ToUpper() == sökord.ToUpper())
                                {
                                    // Matchar sökordet och listan så får användaren följande meddelande utskrivet på skärmen.
                                    Console.WriteLine("Det här är vad vi hittade:" + minBlogg[i][0], minBlogg[i][1]);
                                    Console.WriteLine("\nGör ett nytt val i menyn:");
                                    Console.WriteLine("\n" + "_______________________________________" + "\n\t");
                                    sökning = true;

                                }
                                
                            }

                        }
                        

                        //Om sökordet inte hittas skrivs följande ut i konsollfönster.
                        //break slut på kodblock i kodblock
                        if (!sökning)
                        {
                            Console.WriteLine("\nSökningen gav inget resultat, vänligen försök igen " + "\n");
                            break;
                        }
                        //slut på hela kodblocket
                        break;
Laguna 30422
Postad: 22 dec 2021 07:37

Om du använder val 2 för att visa alla, ser du inlägget då, som du inte ser när du söker?

Programmeraren 3389
Postad: 22 dec 2021 13:39 Redigerad: 22 dec 2021 13:50

Jag tror felet är att du använder kommatecken istf plus i:
Console.WriteLine("Det här är vad vi hittade:" + minBlogg[i][0], minBlogg[i][1]);

Söket: Du hade ett tag "Contains" och det känns mer användarvänligt än "==":
if (minBlogg[i][j].ToUpper().Contains(sökord.ToUpper()))


Svara
Close