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();
}
知道我在这里做错了吗?
答案 0 :(得分:0)
这是一种奇怪的方式,但我测试了一些我自己的样本输入,并且在预期的情况下它可以正常工作。
当找不到startString
时会出现问题,因为第一个string.Split
生成的数组将包含单个元素(原始输入字符串)。当您尝试在endChar
上拆分第二个元素时,找不到第二个元素,这是您的例外。
我确信有更优雅的方法可以做到这一点,但如果找不到null
或startString
,这将完成工作,返回endChar
:
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);
}