Cvičení – vrácení řetězců z metod
Č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.
V editoru Visual Studio Code odstraňte veškerý existující kód z předchozích cvičení.
Do editoru zadejte následující kód:
string ReverseWord(string word) { string result = ""; return result; }Metoda musí iterovat daným slovem a aktualizovat výsledek. Chcete-li to provést, aktualizujte metodu
ReverseWordná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 indexuresulta index přesunete dozadu. Používátei >= 0, protožeise 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.
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));V případě potřeby otevřete integrovaný panel terminálu editoru Visual Studio Code.
Na příkazovém řádku terminálu zadejte příkaz dotnet run. Porovnejte výstup s následujícím:
snake ekansPokud 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.
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; }Dále můžete extrahovat jednotlivá slova z řetězce pomocí
string.Split. Aktualizujte metoduReverseSentencená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
ReverseWordpro každé slovo a uložit je doresult.Aktualizujte metodu
ReverseSentencená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
ReverseWorduvnitř operátoru složeného přiřazení. V tomto kódu je vrácená hodnota zachycena aReverseWordpřidána doresult. 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.
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.
inputAktualizujte text aConsole.WriteLinepří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.
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; }Uložte práci pomocí ctrl + S nebo pomocí nabídky Soubor editoru Visual Studio Code.
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.
Na příkazovém řádku terminálu zadejte příkaz dotnet run.
Ověřte, že váš kód vytvoří následující výstup:
there are snakes at the zoo ereht era sekans ta eht oozPokud 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.