Cvičení – vrácení řetězců z metod

Dokončeno

Často můžete zjistit, že potřebujete napsat metodu, která vrací řetězec. Můžete například chtít načíst řetězec ze sady dat nebo nějakým způsobem upravit řetězec. V tomto cvičení získáte zkušenosti s prací s řetězci v metodách při cvičení běžné otázky pohovoru.

Vytvoření metody, která vrací řetězec

Předpokládejme, že jste kandidátem v programovacím pohovoru. Interviewer vás požádá, abyste napsali metodu pro obrácení řetězce bez použití string.Reverse. Chvíli se zamyslete nad tím, jak můžete tento úkol provést.

Možná jste se rozhodli, že můžete vrátit řetězec iterací od konce řetězce. K uložení každého písmena od začátku do začátku můžete použít dočasný řetězec. Pusťme se do toho.

  1. V editoru Visual Studio Code odstraňte veškerý existující kód z předchozích cvičení.

  2. Do editoru zadejte následující kód:

    string ReverseWord(string word) 
    {
        string result = "";
    
        return result;
    }
    
  3. Metoda musí iterovat daným slovem a aktualizovat výsledek. Chcete-li to provést, aktualizujte metodu ReverseWord následujícím kódem:

    string ReverseWord(string word) 
    {
        string result = "";
        for (int i = word.Length - 1; i >= 0; i--) 
        {
            result += word[i];
        }
        return result;
    }
    

    V tomto bloku kódu začnete od konce slova pomocí word.Length - 1. Odečtete jednu z délky, protože indexy pole začínají na nule a chcete se vyhnout přístupu k prvku mimo hranice. Pak do řetězce přidáte písmeno v aktuálním indexu result a index přesunete dozadu. Používáte i >= 0 , protože i se aktualizuje po spuštění kódu ve smyčce a chcete mít jistotu, že zahrnete nulový index.

Testování kódu

Při psaní kódu je důležité často kontrolovat svou práci. Nalezení a oprava chyb v rané fázi procesu psaní kódu umožňuje strávit více času sestavováním na správném kódu místo ladění jednoho velkého programu. Kontrola vaší práce je často dovednost, že kódování pohovorů hodnotí také vysoce.

  1. Zadejte nový prázdný řádek kódu. Potom vytvořte nějaký vstupní text a zavolejte metodu zadáním následujícího kódu nad metodu ReverseWord :

    string input = "snake";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseWord(input));
    
  2. V případě potřeby otevřete integrovaný panel terminálu editoru Visual Studio Code.

  3. Na příkazovém řádku terminálu zadejte příkaz dotnet run. Porovnejte výstup s následujícím:

    snake
    ekans
    

    Pokud váš kód zobrazí neočekávané výsledky, budete muset zkontrolovat kód, abyste našli chybu a aktualizovali ji. Spusťte kód znovu, abyste zjistili, jestli jste problém vyřešili. Pokračujte v aktualizaci a spouštění kódu, dokud váš kód nevygeneruje očekávané výsledky.

Vytvoření metody pro obrácení slov ve větě

Předpokládejme, že vás váš rozhovor požádá o následnou otázku. Chtějí, abyste každé slovo v dané větě převráceli a zachovali tak původní pozici každého slova. Můžete předpokládat, že každé slovo je oddělené mezerou. Například výraz "string return type" by se stal "gnirts nruter epyt". Chvíli se zamyslete nad tím, jak můžete tuto úlohu provést.

Pokud použijete metodu, kterou jste napsali v předchozím úkolu, můžete si uvědomit, že můžete použít metodu k obrácení každého slova v řetězci jednotlivě. Můžete vytvořit novou větu a přidat každé slovo, protože je obrácené. Pusťme se do toho.

  1. Na konci aktuálního programu vytvořte nový prázdný řádek kódu. Pak zadejte následující kód, který vytvoří novou metodu:

    string ReverseSentence(string input) 
    {
        string result = "";
    
        return result;
    }
    
  2. Dále můžete extrahovat jednotlivá slova z řetězce pomocí string.Split. Aktualizujte metodu ReverseSentence následujícím způsobem:

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        return result;
    }
    

    Teď, když máte přístup ke každému jednotlivému slovu ve větě, můžete použít metodu ReverseWord pro každé slovo a uložit je do result.

  3. Aktualizujte metodu ReverseSentence následujícím způsobem:

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
    
        return result;
    }
    

    Všimněte si, jak můžete volat metodu ReverseWord uvnitř operátoru složeného přiřazení. V tomto kódu je vrácená hodnota zachycena a ReverseWord přidána do result. Metody s návratovými hodnotami je možné použít kdekoli, kde je potřebujete, pokud datový typ odpovídá požadavkům.

    V tomto kódu se každé obrácené slovo připojí k výsledku s přidanou mezerou. Na konci obrácené věty ale zůstane nadbytečné místo.

  4. Nadbytečné místo na konci můžete odebrat pomocí string.Trim. Aktualizujte metodu na následující kód:

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
    
        return result.Trim();
    }
    

    Zvažte návratový výsledek této metody. Metoda může během provádění používat jiné metody a dokonce i v příkazu return, pokud se datové typy shodují.

    Teď jste připraveni volat metodu.

  5. input Aktualizujte text a Console.WriteLine příkaz na následující hodnoty:

    string input = "there are snakes at the zoo";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseSentence(input));
    

Kontrola práce

V této úloze spustíte aplikaci z integrovaného terminálu a ověříte, že váš kód funguje správně. Pojďme na to.

  1. Porovnejte kód s následujícím kódem, abyste měli jistotu, že je správný:

    string input = "there are snakes at the zoo";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseSentence(input));
    
    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
        return result.Trim();
    }
    
    string ReverseWord(string word) 
    {
        string result = "";
        for (int i = word.Length - 1; i >= 0; i--) 
        {
            result += word[i];
        }
        return result;
    }
    
  2. Uložte práci pomocí ctrl + S nebo pomocí nabídky Soubor editoru Visual Studio Code.

  3. V případě potřeby otevřete integrovaný panel terminálu editoru Visual Studio Code.

    Na panelu PRŮZKUMNÍK otevřete terminál v umístění složky TestProject, klikněte pravým tlačítkem myši na TestProject a pak vyberte Otevřít v integrovaném terminálu.

  4. Na příkazovém řádku terminálu zadejte příkaz dotnet run.

  5. Ověřte, že váš kód vytvoří následující výstup:

    there are snakes at the zoo
    ereht era sekans ta eht ooz 
    

    Pokud váš kód zobrazuje různé výsledky, budete muset zkontrolovat kód, abyste našli chybu a aktualizovali ji. Spusťte kód znovu, abyste zjistili, jestli jste problém vyřešili. Pokračujte v aktualizaci a spouštění kódu, dokud váš kód nevygeneruje očekávané výsledky.