如何在C#字符串中找到单词

时间:2012-07-06 14:15:43

标签: c# html-parsing

我需要从互联网上加载一个长字符串,我已经这样做了。现在我需要找到H1标头标签并打印内容。

最短或最简单的方法是什么?

for (int x = 0; x < tempString.Length; x++)
{

    if (write == 2)
    {
        name =name + tempString[x];
        lenght++;
    }
    if (tempString[x] == '<' && tempString[x] == 'h' && tempString[x] == '1' )
        write = 1;

    if (write == 1 && tempString[x] == '>')
        write = 2;

    if (tempString[x] == '-' && write == 1)
        write = 0;
}

我知道这有点奇怪。但这就是我的全部。

5 个答案:

答案 0 :(得分:6)

使用HTML Agility Pack - 您尝试的其他任何内容都只会导致headache

HtmlAgility示例:

var html = "<html><head></head><body><h1>hello</h1></body></html>";

HtmlDocument d = new HtmlDocument();
d.LoadHtml(html);

var h1Contents = d.DocumentNode.SelectSingleNode("//h1").InnerText;

答案 1 :(得分:3)

如果你想在平面C#中做,而你只看一个标签:

int first_tag = str.IndexOf("<H1>");
int last_tag = str.IndexOf("</H1>");
string text = str.SubString((first_tag + 4), (last_tag - first_tag));

答案 2 :(得分:1)

使用HTML库!

否则尝试:

String.IndexOf(String x )

http://msdn.microsoft.com/en-us/library/k8b1470s.aspx

您可以使用它来获取开始和结束标记的第一个索引。然后你可以在这些指数之间阅读。

答案 3 :(得分:1)

System.String类具有 IndexOf(String)等方法 - 报告指定字符串第一次出现的从零开始的索引。

所以在你的情况下,你可以传递"<H1>"。然后您可以从该点开始获取子字符串,然后再次调用此方法再次查找"</H1>"

或者如果您愿意,在.NET中使用正则表达式可能更容易。这些可以在System.Tet.RegularExpressions命名空间中找到。那些肯定更复杂。但我相信你可以练习使用一些小样本并学习黑暗面的力量! (错误....)正则表达式的力量! :)

[edit]现在我看到了其他人的答案,我绝对同意其他人的看法。如果您需要做一些比在HTML格式的字符串中获取一个项目更复杂的事情,请使用html解析器。

答案 4 :(得分:0)

以上所有工作都很好,我不能使用任何外部库

这对我很有用

for (int x = 0; x < tempString.Length; x++)
        {

            if (tempString[x] == '-' && write == 2)
            { write = 0; }

            if (write == 2)
            {
                title =title + tempString[x];
                lenght++; 
            }
            if (tempString[x] == '<' && tempString[x+1] == 'h' && tempString[x+2] == '1' )
            { write = 1; }

            if (write == 1 && tempString[x] == '>')
            { write = 2; }


        }