新手请教 提取邮箱用户名和域名 问题
按照网上写的程序发生问题,代码如下:static void Main(string[] args)
{
//从Email中提出用户名和域名:abc@163.com
string email = Console.ReadLine();
int atIndex = email.IndexOf('@');//atIndex是指域名的长度,int型
string username = email.Substring(0,atIndex);//提取用户名
string 域名 = email.Substring(atIndex+1);//提取域名
Console.WriteLine(username);
Console.WriteLine(域名);
Console.ReadKey();
}
显示域名时带着.com 比如123@321.com,程序输出为
123@321.com
123
321.com
后来根据自己修改,VS2010报错,求前辈们分析下问题,并指点下正确答案
static void Main(string[] args)
{
//从Email中提出用户名和域名:abc@163.com
string email = Console.ReadLine();
int e = email.Length;//输入email的总长度
int atIndex = email.IndexOf('@');//atIndex是指域名的长度,int型
int a = email.IndexOf('.');//.com长度
string username = email.Substring(0, atIndex);//提取用户名
string 域名 = email.Substring(e - a - (atIndex+1));//提取域名(email总长度-.com长度-(用户名+@的长度))
Console.WriteLine(username);
Console.WriteLine(域名);
Console.ReadKey();
}
以上程序输出时出现两个问题。一是如果输入123@321.com 输出则为
123@321.com
123
123@321.com
二是如果输入长点的email地址如12345@54321.com则会报错
第一次发帖,有什么问题请见谅 --------------------编程问答-------------------- 第二个问题是指string 域名 = email.Substring(e - a - (atIndex+1))的值小于0了么?
可我觉得没有小于0啊…… --------------------编程问答-------------------- 你此处计算明算有问题。当email为:abc@163.com时,其length为11,点的索引为7,@索引为3,此时e - a - (atIndex+1))=0,截取时没问题。当email为:12345@54321.com时,其length为15,点的索引为11,@索引为5,此时e - a - (atIndex+1))=-2,这时截取就有问题了。
而且你无非是想得到email中的域名,就按照你从网上弄的那种不就是可以的吗,干吗你还要搞的那么麻烦?而且你那截取方式明显是有问题的。多看看字符串函数吧……
补充:.NET技术 , C#