题目要求
检查输入的电子邮箱是否合法,如果合法则输出邮箱用户名,不合法则输出错误信息,然后询问用户是否继续。
输入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('@')));
}
}
如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!