题目要求
将用户输入的单词用下划线连接起来。
输入时用空格或回车来分隔单词或句子,连续输入两个回车则结束输入。
输入格式
He
is
a
doctor
in
the
hospital
或:
He is a doctor
in the hospital
或:
He is a doctor in the hospital
输出格式
He_is_a_doctor_in_the_hospital
编程平台
Visual Studio 2017 控制台
代码实现
思路:
(1)输入:使用死循环来读取用户输入的每一行内容,由于连续输入两个回车时,第二个回车的内容为空,故读取到的输入为空时即可退出循环。使用一个可变字符串words来存储用户的输入,追加words时每一行的内容用一个空格隔开。
(2)处理:保证words中仅是单词之间有空格,且将一个个单词分离到字符串数组中。
(3)输出:将字符串数组用下划线连接成字符串,输出字符串。
// StringBuilder声明的字符串可以自由扩展大小,string则固定大小。 StringBuilder words = new StringBuilder(); while(true) { string input = Console.ReadLine(); // 读取一行内容 if(input != "") // 或:!input.Equals("") { words.Append(input.Trim()); // Trim函数去除行首行末可能存在的空格 words.Append(" "); // 用空格来于区分行之间的内容 } else // 退出死循环 { break; } } if (words.Length > 1) // 如果有输入单词 { // 输入处理后words最后一个字符一定为空格,故要删去。 words.Remove(words.Length - 1, 1); // 使用正则表达式将任何空白字符替换成一个空格,重点是为了处理制表符等特殊符号产生的空格。 // 由于Regex.Replace的返回结果为string类型,故声明string变量来接收,也方便下一步使用string的Split函数。 // 注意使用正则表达式要引入命名空间System.Text.RegularExpressions。 string input = Regex.Replace(words.ToString(), @"\s", " "); // 以空格分割字符串成字符串数组,并设置StringSplitOptions.RemoveEmptyEntries来去除可能出现连续多个空格而产生的空数组。 // 由于Split函数的返回结果为string[]类型,故声明string[]变量来接收。 string[] output = input.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries); // 使用string的Join函数以“_”来将字符数组连接成字符串后输出。 Console.WriteLine(string.Join("_", output)); } else { Console.Write("您什么也没有输入!"); }
如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!