Упражнение. Возврат строк из методов
Часто может потребоваться написать метод, возвращающий строку. Например, может потребоваться получить строку из набора данных или изменить строку каким-то образом. В этом упражнении вы получите некоторый опыт работы со строками в методах, практикуя распространенный вопрос интервью.
Создание метода, возвращающего строку
Предположим, вы кандидат в интервью по программированию. Интервьюер просит вас написать метод, чтобы отменить строку без использования string.Reverse. Научитесь думать о том, как вы можете выполнить эту задачу.
Возможно, вы решили, что можно отменить строку, выполнив итерацию из конца строки. Временную строку можно использовать для хранения каждой буквы с конца до начала. Приступим.
В редакторе Visual Studio Code удалите существующий код из предыдущих упражнений.
Введите следующий код в редакторе:
string ReverseWord(string word) { string result = ""; return result; }Метод должен выполнить итерацию по заданному слову и обновить результат. Для этого обновите
ReverseWordметод следующим кодом:string ReverseWord(string word) { string result = ""; for (int i = word.Length - 1; i >= 0; i--) { result += word[i]; } return result; }В этом блоке кода вы начинаете с конца слова с помощью
word.Length - 1. Вычитаете один из длины, так как индексы массива начинаются с нуля, и вы хотите избежать доступа к элементу из границ. Затем вы добавите букву по текущему индексу вresultстроку и переместите индекс назад. Вы используетеi >= 0так какiобновляется после выполнения кода в цикле, и вы хотите обязательно включить отсчитываемый от нуля индекс.
Тестирование кода
При написании кода важно часто проверять работу. Поиск и исправление ошибок в начале процесса написания кода позволяет тратить больше времени на правильный код, а не отладку одной большой программы. Проверка вашей работы часто является навыком, который кодировщики ценят высоко, а также.
Введите новую пустую строку кода. Затем создайте входной текст и вызовите метод, введя следующий код над методом
ReverseWord:string input = "snake"; Console.WriteLine(input); Console.WriteLine(ReverseWord(input));При необходимости откройте панель интегрированного терминала Visual Studio Code.
В командной строке терминала введите dotnet run. Сравните выходные данные со следующими результатами:
snake ekansЕсли код отображает непредвиденные результаты, необходимо просмотреть код, чтобы найти ошибку и внести обновления. Запустите код еще раз, чтобы узнать, устранена ли проблема. Продолжайте обновлять и запускать код, пока код не выдает ожидаемые результаты.
Создание метода для обратного слова в предложении
Предположим, ваш интервьюер задает вам следующий вопрос. Они хотят, чтобы вы изменили каждое слово в заданном предложении, сохраняя исходное положение каждого слова. Вы можете предположить, что каждое слово разделено пробелом. Например, строка возвращаемого типа станет "gnirts nruter epyt". Задумайтесь о том, как вы можете выполнить эту задачу.
Если вы используете метод, написанный в предыдущей задаче, вы можете понять, что метод можно использовать для изменения каждого слова в строке по отдельности. Вы можете создать новое предложение и добавить каждое слово по мере его обратного изменения. Приступим.
Создайте пустую строку кода в конце текущей программы. Затем введите следующий код, чтобы создать новый метод:
string ReverseSentence(string input) { string result = ""; return result; }Затем можно извлечь отдельные слова из строки с помощью
string.Split.ReverseSentenceОбновите метод следующим образом:string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); return result; }Теперь, когда у вас есть доступ к каждому отдельному слову в предложении, вы можете использовать
ReverseWordметод для каждого слова и хранить их вresult.ReverseSentenceОбновите метод следующим образом:string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); foreach(string word in words) { result += ReverseWord(word) + " "; } return result; }Обратите внимание, что метод можно вызвать
ReverseWordвнутри оператора составного назначения. В этом коде возвращаемое значение фиксируетсяReverseWordи добавляется вresult. Методы с возвращаемыми значениями можно использовать в любом месте, если тип данных соответствует требованиям.В этом коде каждое обратное слово добавляется к результату с добавленным пробелом. Однако это оставляет дополнительное пространство в конце обратного предложения.
Вы можете удалить дополнительное пространство в конце с помощью
string.Trim. Обновите метод до следующего кода:string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); foreach(string word in words) { result += ReverseWord(word) + " "; } return result.Trim(); }Рассмотрим результат возврата этого метода. Метод может использовать другие методы во время выполнения и даже в операторе return, если типы данных соответствуют.
Теперь вы готовы вызвать метод!
inputОбновите текст и инструкциюConsole.WriteLineследующим образом:string input = "there are snakes at the zoo"; Console.WriteLine(input); Console.WriteLine(ReverseSentence(input));
Проверьте свою работу
В этой задаче вы запустите приложение из интегрированного терминала и убедитесь, что код работает правильно. Итак, приступим.
Сравните код со следующими способами, чтобы убедиться, что это правильно:
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; }Сохраните работу с помощью ctrl + S или с помощью меню "Файл Visual Studio Code".
При необходимости откройте панель интегрированного терминала Visual Studio Code.
На панели обозревателя откройте терминал в папке TestProject, щелкните правой кнопкой мыши TestProject и выберите "Открыть в интегрированном терминале".
В командной строке терминала введите dotnet run
Убедитесь, что код создает следующие выходные данные:
there are snakes at the zoo ereht era sekans ta eht oozЕсли код отображает различные результаты, необходимо просмотреть код, чтобы найти ошибку и внести обновления. Запустите код еще раз, чтобы узнать, устранена ли проблема. Продолжайте обновлять и запускать код, пока код не выдает ожидаемые результаты.