练习 - 从方法返回字符串
你可能经常发现需要编写一个返回字符串的方法。 例如,你可能想要从一组数据中检索字符串,或者以某种方式修改字符串。 在本练习中,你将在练习常见面试问题时,获得一些使用方法字符串的经验。
创建返回字符串的方法
假设你是编码面试的候选人。 面试官要求你编写一个方法,用于在不使用 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从单词末尾开始。 从长度中减去 1,因为数组索引从 0 开始,并且你需要避免访问超出边界的元素。 然后,将当前索引处的字母添加到result字符串中,然后向后移动索引。 你使用i >= 0,因为i在执行循环中的代码后更新,并且你希望确保包含第 0 个索引。
测试代码
编码时,经常检查工作非常重要。 在编码过程的早期查找和更正错误使你能够花费更多时间在正确的代码上构建,而不是调试一个大型程序。 经常检查工作也是一项编码面试官非常看重的技能。
输入新的空白代码行。 然后,在
ReverseWord方法上方输入以下代码,创建一些输入文本并调用方法:string input = "snake"; Console.WriteLine(input); Console.WriteLine(ReverseWord(input));如有必要,打开 Visual Studio Code 的集成终端面板。
在终端命令提示符处,输入 dotnet run。 将输出与以下内容进行比较:
snake ekans如果代码显示意外结果,则需要查看代码以查找错误并进行更新。 再次运行代码以查看是否已解决问题。 继续更新和运行代码,直到代码生成预期结果。
创建在句子中反转单词的方法
假设面试官问你一个后续问题。 他们希望你在给定句子中反转每个单词,保持每个单词的原始位置。 可以假设每个单词都用空格分隔。 例如,“string return type”将变为“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(); }花点时间考虑此方法的返回结果。 一个方法可以在执行过程中使用其他方法,甚至可以在返回语句中使用其他方法,只要数据类型匹配即可。
现在,你已准备好调用方法!
将
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如果代码显示不同的结果,则需要查看代码以查找错误并进行更新。 再次运行代码以查看是否已解决问题。 继续更新和运行代码,直到代码生成预期结果。