C#编程实践:循环检查输入的电子邮箱是否合法(学习笔记)

C#编程实践:循环检查输入的电子邮箱是否合法(学习笔记)

题目要求

检查输入的电子邮箱是否合法,如果合法则输出邮箱用户名,不合法则输出错误信息,然后询问用户是否继续。
输入yes时则继续输入和检查,且兼容各种形式的yes开头的字符串输入,如YES、yes、YeS &hellip……,否则退出程序。

输入格式

[email protected]

输出格式

1111111111

编程平台

Visual Studio 2017 控制台

代码实现

思路:使用死循环让用户输入电子邮箱和指令,输入电子邮箱后调用编写的函数检查邮箱合法性并输出结果,然后询问用户是否继续,判断用户输入的指令来决定是否退出死循环。

static void Main(string[] args)
{
    while(true)
    {
        string input = Console.ReadLine(); // 读取用户输入的电子邮箱
        ValidityCheck(input); // 检查邮箱合法性
        Console.WriteLine("\n请问是否继续输入?(输入yes即可继续)\n");
        input = Console.ReadLine(); // 获取用户输入的指令
        
        // 使用正则表达式检查输入的指令是否是以yes开头,检查前将输入的指令转换成小写字母。
        // 注意使用正则表达式要引入命名空间System.Text.RegularExpressions。
        if(Regex.IsMatch(input.ToLower(), "^yes"))
        {
            Console.WriteLine("\n继续成功,请继续输入一个电子邮箱!\n");
        }
        else
        {
            Console.Write("\n退出成功,按任意键即可退出本程序!");
            break;
        }
    }
    Console.ReadKey();
}
// 检查邮箱合法性函数
private static void ValidityCheck(string input)
{
	// 合法的电子邮箱:用户名@主机名.域名
    if (!input.Contains("@") || (input.IndexOf('@') != input.LastIndexOf('@')))
    {
        Console.WriteLine("\n您输入的邮箱不合法,因为必须有且仅有一个“@”字符!");
    }
    else if(!input.Contains(".") || (input.IndexOf('.') != input.LastIndexOf('.')))
    {
        Console.WriteLine("\n您输入的邮箱不合法,因为必须有且仅有一个“.”字符!");
    }
    else if(input.LastIndexOf('.') - input.LastIndexOf('@') < 0)
    {
        Console.WriteLine("\n您输入的邮箱不合法,因为“@”字符后面缺少一个“.”字符!");
    }
    else if (input.LastIndexOf('.') - input.LastIndexOf('@') == 1)
    {
        Console.WriteLine("\n您输入的邮箱不合法,因为“@”字符和“.”字符之间缺少主机名!");
    }
    else if (input[0] == '@')
    {
        Console.WriteLine("\n您输入的邮箱不合法,因为“@”字符起前面缺少用户名!");
    }
    else if (input[input.Length - 1] == '.')
    {
        Console.WriteLine("\n您输入的邮箱不合法,因为“.”字符起后面缺少域名!");
    }
    else
    {
        Console.WriteLine("\n该邮箱合法!其用户名为:" + input.Substring(0, input.LastIndexOf('@')));
    }
}

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

猜你喜欢

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