如果regex.Matches
与任何内容都不匹配并尝试返回matches.group[]
我有一个HTML div中10张专辑的列表。每张专辑都有5个属性,例如album cover path
,album link
,album name
等。
我在函数中使用regex matchcollection进行了HTML解析,并为每个属性调用了此函数。
Regex regex = new Regex(pattern, RegexOptions.Compiled);
MatchCollection mc = regex.Matches(source);
string icerik = mc[0].Groups[group].Captures[0].Value;
我得到一个清晰的清单:
http...
...
如果这些部分存在于html中,则没有问题。但问题是,如果,例如,html中没有提供第二张专辑的图像路径怎么办?在这种情况下,没有匹配发生,mc[0].Groups[group].Captures[0].Value
导致超出边界的异常。
在发生此错误之前,我该怎么做?
答案 0 :(得分:0)
您可以使用LINQ to Objects中的Any()运算符。这需要System.Linq库(.NET 4.0的一部分):
if (mc[0].Groups[group].Captures.Any())
{
...
}
这将告诉您Captures集合是否包含任何元素。如果没有,那么当然你不能采用元素[0] ......
答案 1 :(得分:0)
这应该这样做。
if (mc.Count > 0 &&
mc[0].Groups.Count > group &&
mc[0].Groups[group].Captures.Count > 0)