我正在尝试编写解析按钮 当我输入skw2030@gmail.com电子邮件地址时 messagbox弹出 用户名:skw2030 域名:gmail.com
因此,我使用代码删除“@”但是当我点击解析按钮时, 它总是删除用户名的第一个字母,例如kw2030 ...... 我该怎么办?
private void btnParse_Click(object sender, EventArgs e)
{
string email = Convert.ToString(txtEmail.Text);
email = email.Trim();
if (email.Contains("@"))
email = email.Remove(0, 1);
int IndexDomain = email.IndexOf("@") + 1;
string UserName = email.Substring(0 , IndexDomain - 1);
string DomainName = email.Substring(IndexDomain);
MessageBox.Show("User name:" + UserName.ToString() + "\n"
+ "Domain Name:" + DomainName.ToString(), "Parsed String");
}
答案 0 :(得分:1)
这可能会对您有所帮助:
很少有建议:
txtEmail
的输入已经是您不需要的字符串
将其转换为字符串。"@"
,那么最好显示警告,输入的邮件ID无效。2
。这将为您提供所需的结果。 String.Remove
将接受两个参数,第一个表示起始索引,第二个表示字符数:因此,如果要执行此删除操作,则需要执行此操作(但这不是必要的):
int IndexDomain = email.IndexOf("@");
email = email.Remove(IndexDomain, 1);
另一个更好的选择是使用占位符格式化输出消息;
现在考虑一下代码段:
string email = txtEmail.Text.Trim();; // "skw2030@gmail.com"
if (email.Contains("@"))
{
string[] addressElements = email.Split('@');
MessageBox.Show(String.Format("User name: {0} \n Domain Name: {1}",addressElements[0],addressElements[1]), "Parsed String");
}
else
MessageBox.Show("invalid Mail");
答案 1 :(得分:1)
您可以使用string的split方法。像那样:
string email = "abc@example.com";
string[] arr = email.Split('@');
它会给你2个元素数组,第一个是名字(abc),第二个是域名(example.com)。
顺便说一句,在你的情况下,这就是问题所在:
email = email.Remove(0, 1);
答案 2 :(得分:1)
我猜你只想将字符串分成两部分,对吧?
在电子邮件中,@左边的所有内容都是用户名,右边是域名。要将电子邮件拆分为两部分,请使用Split()
方法:
string email = "abc@def.com";
string[] twoParts = email.Split('@');
现在数组twoParts
包含两个元素 - " abc"和" def.com"那就是你想要的,对吧?
string username = twoParts[0];
string domainName = twoParts[1];
但是等等!如果电子邮件无效怎么办?要检查电子邮件是否无效,您只需检查数组的长度:
if (twoParts.Length != 2) {
// show error message
}
当然,在获得用户名和域名之前,您应该检查一下。
答案 3 :(得分:0)
以下这一行是从您的电子邮件字符串的索引0中删除1个字符。
email = email.Remove(0, 1);
If (email.Contains("@"))
可用于确保用户输入了有效的电子邮件来处理抛出的异常。你应该这样修改你的代码:
private void btnParse_Click(object sender, EventArgs e)
{
string email = Convert.ToString(txtEmail.Text);
email = email.Trim();
if (email.Contains("@"))
{
//email = email.Remove(0, 1); <--- Remove this
int IndexDomain = email.IndexOf("@") + 1;
string UserName = email.Substring(0 , IndexDomain - 1);
string DomainName = email.Substring(IndexDomain);
MessageBox.Show("User name:" + UserName.ToString() + "\n"
+ "Domain Name:" + DomainName.ToString(), "Parsed String");
}
else
{
//Tell users that the email is invalid.
//For example: MessageBox.Show("Invalid Email");
}
}
无论如何,和其他人一样,你一定要考虑String.Split
。基本上它用户定义的字符分隔字符串。所以如果你这样做:
string emailArray = email.Split('@');
您的UserName
和DomainName
现在只是:
string UserName = emailArray[0];
string DomainName = emailArray[1];
更简单吧?
答案 4 :(得分:0)
您可以对字符串使用子字符串方法。像那样:
private void btnParse_Click(object sender, EventArgs e)
{
string email = txtEmail.Text.Trim(); // your email address
if (email.Contains("@"))
{
var userName = email.Substring(0, email.IndexOf('@'));
var domainName = email.Substring(email.IndexOf('@') + 1, email.Length - email.IndexOf('@') - 1);
MessageBox.Show("User name:" + userName + "\n" + "Domain Name:" + domainName, "Parsed String");
}
else
{
MessageBox.Show("Invalid email");
}
}