分裂时索引错误

本文关键字:错误 索引 分裂 | 更新日期: 2023-09-27 17:50:35

我不确定修复这个问题的最佳方法,在我的代码中:

var correctedUrl = Helpers.CorrectUrl(eLink);
string[] splitAndCheckExtension = correctedUrl.Split('.');
if ((Helpers.returnExtensionsAvailable(splitAndCheckExtension[1].ToString()) == true))
{

这部分:splitAndCheckExtension[1].ToString()只是一个url扩展(例如.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;
    }
}

我不知道如何修复它

分裂时索引错误

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

也就是说,使用您提供的示例URL (https://dotnetfiddle.net/Nyu1aq),您的代码似乎工作得很好。如果URL不包含任何.字符,那么您将得到索引越界异常,如预期的那样。

要解决这个问题,将if语句更改为如下内容:

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