C#编程实践:将输入的单词用下划线连接起来(学习笔记)

C#编程实践:将输入的单词用下划线连接起来(学习笔记)

题目要求

将用户输入的单词用下划线连接起来。
输入时用空格或回车来分隔单词或句子,连续输入两个回车则结束输入。

输入格式

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("您什么也没有输入!");
}

如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!

猜你喜欢

转载自blog.csdn.net/weixin_40589192/article/details/106922789