C# 如何解析字符串中的文本并将其添加到列表<;字符串>;使用indexof和substring?

C# 如何解析字符串中的文本并将其添加到列表<;字符串>;使用indexof和substring?,c#,.net,C#,.net,守则: 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 ind

守则:

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);
}
int索引=0;
列表名称=新列表();
while(索引!=-1)
{
string firstTag=“一个标题”;
字符串endTag=“href”;
string forums=webBrowser1.DocumentText;
index=forums.IndexOf(firstTag);
int index1=forums.IndexOf(endTag,index);
字符串计数=forums.Substring(索引+9,((索引1-35)-index));
名称。添加(ForumScont);
}
在这种情况下,我想使用indexof和substring。
我现在这样做,我得到了无休止的循环和非常大的列表名,其中所有的名称都是相同的,索引永远不会向前移动。

看起来你永远不会向前移动起点。获取第一个索引时,需要使用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;
}
const string openingTag=“a title=\”;
常量字符串closingTag=“\”href”;
var html=“sadsffdaf a title=\”href,a title=”href=”href=”href=”;
变量名称=新列表();
var指数=0;
var-previousIndex=0;
而(索引>-1)
{
index=html.IndexOf(openingTag,previousIndex);
如果(索引==-1)
继续;
var secondIndex=html.IndexOf(closingTag,index);
var result=html.Substring(index+openingTag.Length,secondIndex-(index+openingTag.Length));
名称。添加(结果);
以前的索引=索引+1;
}
编辑:根据您的评论,我更新了代码,添加了一个我测试过的示例HTML字符串

我还更新了子字符串以获取两个标记之间的文本。我想这就是你想做的

另外,在你的问题中,你从“nums”中获取第一个索引,从“论坛”中获取第二个标签。我猜这是打字错误


如果看不到您正在解析的实际HTML,我不确定我是否能提供进一步的帮助。

我认为这是一个HTML文档?另外,请添加一些示例数据+预期输出无限循环是因为您从未将
索引
设置为
-1
。无限循环是因为webBrowser1。DocumentText始终包含“标题”.使用字符串函数解析html文档中的数据有点像用牙签与赤裸的龙搏斗。。。我会查找html agility pack并以一种更安全的方式来完成这项工作。这是我想从title=“מכבית
א”href中提取的字符串示例,我想得到的是其中的文本:מכית
א在您第一次给出的解决方案中,它运行良好,我看到了名字。但是在下一次迭代中,我得到的是其他文本,而不是我想要的名称,在第四次迭代中,我得到了一个异常:string forumscont=forums.Substring(index+9,((index1-35)-index));长度不能小于零。我的回答只是解释了为什么在无限循环中一遍又一遍地得到相同的结果。如果没有看到正在解析的HTML,就很难解释其他问题的原因。此外,听起来您的子字符串计算不正确。@DanielShabos我更新了答案,以响应您提供的其他信息。我希望这有助于你走上正轨。RagtimeWilly它几乎可以完美地工作。我的列表中有204个左右的结果和项目。问题是列表中的前三项不好。例如例如,第一个项目的索引0是:例如第一个项目的索引0是:一个项目的索引0是:一个项目的第一个项目是:一个项目的索引0是:一个项目的第一个项目是:一个项目是:一个项目的索引0是:一个项目是:一个项目是:一个项目是:第一个项目是:一个项目是:注册消息,第二个项目是:第二项目是:第二项目是:第二个项目是:第二项目是:第二项目是:第二项目是:第二项目是:第二项目是:一个项目是:一个项目是:一个项目是:一个项目是:一个项目是:一个项目是:一个项目是:一个项目是:一个项目是:一个项目是:一个项目是:一个项目是:一个项目是:是是是:一个是:一个是是:一个是:一个是是是是是:一个是:一个是是:请参见此处的html文本文件内容: