Esercizio - Restituire stringhe dai metodi

Completato

Spesso è necessario scrivere un metodo che restituisca una stringa. Ad esempio, è possibile recuperare una stringa da un set di dati o modificare una stringa in qualche modo. In questo esercizio si farà nesperienza nell'uso delle stringhe nei metodi durante la pratica di una domanda di colloquio comune.

Creare un metodo che restituisca una stringa

Si supponga di essere un candidato in un colloquio di scrittura del codice. L'intervistatore chiede di scrivere un metodo per invertire una stringa senza usare string.Reverse. Prendersi un attimo per pensare a come eseguire questa attività.

Si potrebbe decidere di invertire una stringa eseguendo l'iterazione dalla fine della stringa. È possibile usare una stringa temporanea per archiviare ogni lettera dalla fine all'inizio. È ora di iniziare.

  1. Nell'editor di Visual Studio Code eliminare qualsiasi codice creato negli esercizi precedenti.

  2. Nell'editor, immettere il codice seguente:

    string ReverseWord(string word) 
    {
        string result = "";
    
        return result;
    }
    
  3. Il metodo deve scorrere la parola specificata e aggiornare il risultato. A tale scopo, aggiornare il metodo ReverseWord con il codice seguente:

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

    In questo blocco di codice si inizia dalla fine della parola usando word.Length - 1. Si sottrae uno dalla lunghezza poiché gli indici di matrice iniziano da zero e si vuole evitare di accedere a un elemento fuori dai limiti. Aggiungere quindi la lettera in corrispondenza dell'indice corrente alla stringa result e spostare l'indice all'indietro. Viene usato i >= 0 perché i viene aggiornato dopo l'esecuzione del codice nel ciclo e si vuole assicurarsi di includere l'indice zeroth.

Eseguire test del codice

Quando si scrive codice, è importante controllare frequentemente il lavoro. La ricerca e la correzione degli errori all'inizio del processo di scrittura del codice consentono di dedicare più tempo alla compilazione del codice corretto anziché al debug di un programma di grandi dimensioni. Il controllo del lavoro è spesso una competenza che chi svolge i colloqui valuta in maniera altamente positiva.

  1. Immettere una nuova riga di codice vuota. Creare quindi testo di input e chiamare il metodo immettendo il codice seguente sopra il metodo ReverseWord:

    string input = "snake";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseWord(input));
    
  2. Se necessario, aprire il pannello Terminale integrato di Visual Studio Code.

  3. Al prompt dei comandi del terminale immettere dotnet run. Confrontare l'output con quanto segue:

    snake
    ekans
    

    Se il codice visualizza risultati imprevisti, è necessario esaminarlo per trovare l'errore e apportare aggiornamenti. Eseguire di nuovo il codice per verificare se il problema è stato risolto. Continuare ad aggiornare ed eseguire il codice fino a quando non produce i risultati previsti.

Creare un metodo per invertire le parole in una frase

Si supponga che l'intervistatore ti faccia un’altra domanda. Vogliono invertire ogni parola in una determinata frase, mantenendo la posizione originale di ogni parola. È possibile presupporre che ogni parola sia separata da uno spazio. Ad esempio, "string return type" diventa "gnirts nruter epyt". Prendersi un attimo per pensare a come eseguire questa attività.

Se si usa il metodo descritto nell'attività precedente, ci si potrebbe accorgere che è possibile usare il metodo per invertire singolarmente ogni parola nella stringa. È possibile creare una nuova frase e aggiungere ogni parola mentre viene invertita. È ora di iniziare.

  1. Creare una nuova riga di codice vuota alla fine del programma corrente. Immettere quindi il codice seguente per creare un nuovo metodo:

    string ReverseSentence(string input) 
    {
        string result = "";
    
        return result;
    }
    
  2. È quindi possibile estrarre le singole parole dalla stringa usando string.Split. Aggiornare il metodo ReverseSentence al seguente:

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

    Ora che si ha accesso a ogni singola parola nella frase, è possibile usare il metodo ReverseWord in ogni parola e archiviarle in result.

  3. Aggiornare il metodo ReverseSentence al seguente:

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

    Si noti come è possibile chiamare il metodo ReverseWord all'interno di un operatore di assegnazione composta. In questo codice, il valore restituito viene acquisito da ReverseWord e aggiunto a result. I metodi con valori restituiti possono essere usati ovunque siano necessari, purché il tipo di dati soddisfi i requisiti.

    In questo codice ogni parola invertita viene aggiunta al risultato con uno spazio aggiunto. Tuttavia, questo lascia uno spazio aggiuntivo alla fine della frase invertita.

  4. È possibile rimuovere lo spazio aggiuntivo alla fine usando string.Trim. Aggiornare il metodo con il codice seguente:

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

    Prendere in considerazione il risultato restituito di questo metodo. Un metodo può usare altri metodi durante l'esecuzione e anche nell'istruzione return, purché i tipi di dati corrispondano.

    A questo punto puoi dire che è questo è il tuo metodo!

  5. Aggiornare il testo input e l'istruzione Console.WriteLine al seguente:

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

Controlla il tuo lavoro

In questa attività si eseguirà l'applicazione dal terminale integrato e si verificherà che il codice funzioni correttamente. Iniziamo.

  1. Confrontare il codice con il seguente per assicurarsi che sia corretto:

    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. Salvare il lavoro premendo CTRL + S o il menu File di Visual Studio Code.

  3. Se necessario, aprire il pannello Terminale integrato di Visual Studio Code.

    Nel pannello ESPLORA RISORSE per aprire un terminale nel percorso della cartella TestProject, fare clic con il pulsante destro del mouse su TestProject e quindi scegliere Apri nel terminale integrato.

  4. Al prompt dei comandi del terminale immettere dotnet run

  5. Verificare che il codice produca l'output seguente:

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

    Se il codice visualizza risultati diversi, è necessario esaminarlo per trovare l'errore e apportare aggiornamenti. Eseguire di nuovo il codice per verificare se il problema è stato risolto. Continuare ad aggiornare ed eseguire il codice fino a quando non produce i risultati previsti.