发生类型为'System.ArgumentOutOfRangeException'的未处理异常

时间:2019-03-06 15:46:22

标签: c#

该代码应将电子邮件解析为用户名和域名。如果我键入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);

1 个答案:

答案 0 :(得分:1)

email.StartsWith("")将始终为true(您实际上并未指定电子邮件应以其开头的任何内容)。由于当您尝试调用email = Email.Remove(0, 1);时,它总是以空字符串开头。您正在尝试删除第一个字符,并且由于字符串为空,因此没有第一个字符(字符串的总长度为0),因此您会遇到该异常。

我的建议:避免使用大小写不同的多个变量(例如,电子邮件和电子邮件)。这导致了一些混乱。这些是2个独立的变量,您根本没有为Email分配任何内容(国会大厦E),因此对于email = Email.Remove(0, 1);Email将始终是一个空字符串并将其抛出错误。