该代码应将电子邮件解析为用户名和域名。如果我键入apa@gmail.com,则会显示一个消息框,并显示“用户名:apa域名:gmail.com”。
我改编了我的教科书中的代码,并在email = Email.Remove(0, 1);
和domainName = Email.Remove(Email.Length -1, 1)
上不断收到上述错误消息。有什么建议吗?
public partial class StringHandling : Form
{
string email = "";
string state = "";
string city = "";
int zipCode = 0;
public StringHandling()
{
InitializeComponent();
}
private void btnParse_Click(object sender, EventArgs e)
{
string Email = "";
string domainName = "";
email = txtEmail.Text;
email = Email.Trim();
if (email.StartsWith(""))
email = Email.Remove(0, 1);
if (email.EndsWith("@"))
domainName = Email.Remove(Email.Length - 1, 1);
MessageBox.Show("Username: " + email + "\n" + "Domain Name: " + domainName);
答案 0 :(得分:1)
email.StartsWith("")
将始终为true(您实际上并未指定电子邮件应以其开头的任何内容)。由于当您尝试调用email = Email.Remove(0, 1);
时,它总是以空字符串开头。您正在尝试删除第一个字符,并且由于字符串为空,因此没有第一个字符(字符串的总长度为0),因此您会遇到该异常。
我的建议:避免使用大小写不同的多个变量(例如,电子邮件和电子邮件)。这导致了一些混乱。这些是2个独立的变量,您根本没有为Email
分配任何内容(国会大厦E),因此对于email = Email.Remove(0, 1);
,Email
将始终是一个空字符串并将其抛出错误。