使用正则表达式或字符串函数,很好实现的。下面是我的简单实现。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace sjdcskjjk
{
class Program
{//判断一个字符串是否是合法的Email地址。一个Email地址的特征就是以一个字符序列开始,
//后边跟着“@”符号,后边又是一个字符序列,后边跟着符号“.”,最后是字符序列。
static void Main(string[] args)
{
Console.WriteLine("这里不采用正则,而是用字符串处理.");
Console.WriteLine("我的理解是题目中的字符序列,是不包括例如‘.’这种特殊字符的。而是字母和数字和下划线的组合。");
Console.WriteLine("请输入一个Email:");
string email = Console.ReadLine();//让用户输入一句话,并赋值给email.
int count=0;//记录@和.的数目
foreach(char ch in email)
{
if(ch=='@'||ch=='.')
count++;
}
int index_at = email.IndexOf("@");//记录@所在的位置
int index_point = email.IndexOf(".");//记录.所在的位置
if (email.Length < 6||count!=2)
{
Console.WriteLine("Email不合法!");
Console.ReadKey();
return;
//"@"后是域名或IP,不少于四个字符 ,所以如果Email地址的长度小于6,肯定是非法的
//本题,合法的Email只能有一个‘@’和‘.’,故两个字母在Email的个数必须为2,否则就不合法。
}
//如果address字符串中存在"@"和".",并且"@"不在第一位也不在倒数四位之内、
//"@"往后一位不是".","."也不在倒数两位之内,返回真,否则返回假
if (0 < index_at && index_at < email.Length - 4 && index_at + 1 < index_point && index_point < email.Length - 2)
{
Console.WriteLine("Email合法!");
Console.ReadKey();
}
else
{
Console.WriteLine("Email不合法!");
Console.ReadKey();
}
}
}
}
|