C# 拆分时的索引错误

C# 拆分时的索引错误,c#,C#,在我的代码中,我不确定修复此问题的最佳方法: var correctedUrl = Helpers.CorrectUrl(eLink); string[] splitAndCheckExtension = correctedUrl.Split('.'); if ((Helpers.returnExtensionsAvailable(splitAndCheckExtension[1].ToString()) == true)) { 这部分:splitAndCheckExtension[1].T

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

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

if ((Helpers.returnExtensionsAvailable(splitAndCheckExtension[1].ToString()) == true))
{
这部分:
splitAndCheckExtension[1].ToString()
只是一个URL扩展(例如.com/.net等)

错误是:索引超出了数组的边界。只有在输入格式错误的URL时才会发生这种情况,例如

功能代码:

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(),您的代码似乎工作得很好。如果URL不包含任何
字符,那么您将获得索引越界异常,正如预期的那样

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

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

发生错误时,请发布
correctedUrl
的值(可能这也意味着您必须关闭问题…)为什么要将
扩展名
字符串添加到
ex
?您的if检查总是正确的。
http://www.www.intera
不是格式错误的URI。