0

Visual Studio 在此函数内引发 IndexOutOfRangeException:

public static string ExtractString(string path, string startString, char endChar)
{
    string content = File.ReadAllText(path);

    /*at this line*/return content.Split(new string[] { startString }, StringSplitOptions.None)[1].Split(endChar)[0].Trim();
}

知道我在这里做错了什么吗?

4

1 回答 1

0

这是一种奇怪的做法,但我用自己的一些样本输入进行了测试,在预期的情况下它工作正常。

未找到时会出现问题startString,因为第一个生成的数组string.Split将包含单个元素(原始输入字符串)。当您尝试在 上拆分第二个元素时endChar,找不到第二个元素,这是您的例外。

我敢肯定有更优雅的方法可以做到这一点,但这将完成这项工作,null如果找到startStringendChar找不到则返回:

public static string ExtractString(string content, string startString, char endChar)
{
    int i, j;

    i = content.IndexOf(startString);

    if (i == -1)
        return null;
    else
        i += startString.Length; // Start at char after startString

    j = content.IndexOf(endChar);

    if (j == -1)
        return null;

    return content.Substring(i, j - i);
}
于 2014-09-16T02:05:04.920 回答