拆分时索引错误

时间:2015-05-23 19:54:49

标签: c#

在我的代码中,我不确定解决此问题的最佳方法:

var correctedUrl = Helpers.CorrectUrl(eLink);
string[] splitAndCheckExtension = correctedUrl.Split('.');

if ((Helpers.returnExtensionsAvailable(splitAndCheckExtension[1].ToString()) == true))
{

此部分:splitAndCheckExtension[1].ToString()只是一个网址扩展名(例如.com / .net等)。

错误是:索引超出了数组的范围,只有在输入格式错误的URL时才会发生这种情况,例如:http://www.www.intera

功能代码:

public static bool returnExtensionsAvailable(string extension)
{
    string[] ex = new string[] { "com", "com.pl", "net", "org", "pl", "info", "de", "ca", "co.uk", extension};
    if (ex.Contains(extension))
    {
        return true;
    } else {
        return false;
    }
}

我不确定如何修复它。

1 个答案:

答案 0 :(得分:1)

简短的回答是,在使用splitAndCheckExtension.Length之前,您应该检查splitAndCheckExtension[1].ToString(),因为它可能只包含零个或一个元素,在这种情况下[1]超出了数组的范围。< / p>

也就是说,使用您提供的示例网址(https://dotnetfiddle.net/Nyu1aq),您的代码似乎运行正常。如果URL不包含任何.个字符,那么您可以按预期获得索引超出范围的异常。

要解决此问题,请将if语句更改为以下内容:

if (splitAndCheckExtension.Length > 1 &&
    (Helpers.returnExtensionsAvailable(splitAndCheckExtension[1].ToString()) == true))