代码:
int index = 0;
List<string> Names = new List<string>();
while (index != -1)
{
string firstTag = "a title";
string endTag = "href";
string forums = webBrowser1.DocumentText;
index = forums.IndexOf(firstTag);
int index1 = forums.IndexOf(endTag, index);
string Count = forums.Substring(index + 9, ((index1 - 35) - index));
Names.Add(forumsCount);
}
在这种情况下,我想使用indexof和substring。 我这样做的方式现在我得到无限循环和非常大的列表名称和内部的所有名称是相同的索引永远不会前进。
答案 0 :(得分:0)
看起来你永远不会向前推进起点。获取第一个索引时需要使用 IndexOf(String,Int32)并指定从哪里开始搜索,否则您将获得相同的结果。
这样的事情:
const string openingTag = "a title=\"";
const string closingTag = "\" href";
var html = " sadsffdaf a title=\"מכבי תאמכ\" href, a title=\" תאמכ\" href, a title=\"מכבי \" href";
var names = new List<string>();
var index = 0;
var previousIndex = 0;
while (index > -1)
{
index = html.IndexOf(openingTag, previousIndex);
if (index == -1)
continue;
var secondIndex = html.IndexOf(closingTag, index);
var result = html.Substring(index + openingTag.Length, secondIndex - (index + openingTag.Length));
names.Add(result);
previousIndex = index + 1;
}
编辑:我更新了代码,以根据您的评论添加我测试过的示例HTML字符串。
我还更新了子字符串以获取两个标签之间的文本。我认为这是你想做的事情?
另外,在你的问题中,你从'nums'获取第一个索引,从'forums'获取第二个标记。我猜这是一个错字?
我不确定如果没有看到您要解析的实际HTML,我可以继续提供帮助。