题目要求
检查输入的电子邮箱是否合法,如果合法则输出邮箱用户名,不合法则输出错误信息,然后询问用户是否继续。
输入yes时则继续输入和检查,且兼容各种形式的yes开头的字符串输入,如YES、yes、YeS &hellip……,否则退出程序。
输入格式
输出格式
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('@'))); } }
如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!