在C#中的特定单词后获取字符串

时间:2012-10-03 23:17:14

标签: c# .net string

我有一个带有这个html的字符串:

<div class="cnt_listas"><ol id="listagem1" class="cols_2">
<li><a href="/laura-pausini/73280/">16/5/74</a></li>
<li><a href="/laura-pausini/73280/traducao.html">16/5/74</a></li>
</div>

我需要在<ol id="listagem1" class="cols_2"></div>之间获取所有文字。 此字符串中的文本可能与此不同,它是网站的结果。 我怎样才能得到这部分内容?

在这种情况下,我需要的文字是:

<li><a href="/laura-pausini/73280/">16/5/74</a></li>
<li><a href="/laura-pausini/73280/traducao.html">16/5/74</a></li>

4 个答案:

答案 0 :(得分:2)

我会使用HtmlAgilityPack来解析html

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var h = doc.DocumentNode.SelectSingleNode("//ol[@id='listagem1']").InnerHtml;

答案 1 :(得分:0)

几周前我在Stackoverflow上找到这段代码时需要相同的算法怎么样?

private IEnumerable<string> GetSubStrings(string input, string start, string end)
{
    Regex r = new Regex(Regex.Escape(start) + "(.*?)" + Regex.Escape(end));
    MatchCollection matches = r.Matches(input);
    foreach (Match match in matches)
        yield return match.Groups[1].Value;
}

编辑: This是此代码的来源。

编辑2:要对我的回答发表评论,请查看this

答案 2 :(得分:0)

这不是解析HTML的最佳方法,但这是一种扩展方法,通常会以您要求的方式处理字符串:

public static string Between(this string source, string start, string end)
{
    // Find the first occurence of the start string
    var i = source.IndexOf(start);
    if (i < 0)
        return string.Empty;

    // Advance past the start string
    i += start.Length;

    // Find the next occurence of the end string
    var j = source.IndexOf(end, i);
    if (j < 0)
        return string.Empty;

    // Return the string found between the positions
    return source.Substring(i, j - i);
}

将它放在一个静态类中,然后像这样调用它:

var substring = s.Between("foo","bar");

根据需要处理边缘情况(未找到字符串等)

答案 3 :(得分:-1)

我不确切地说你在说什么......也许这就是:

string specificWord = stringWhtml.Substring(stringWhtml.IndexOf("cols_2") + 8, stringWhtml.IndexOf("</div>"));