C# 从HTML中提取字符串

C# 从HTML中提取字符串,c#,string,C#,String,我想从以下html代码中提取字符串KLE3KAN918D429: <td class="Labels"> CODE (Sp Number): </td><td width="40.0%"> KLE3KAN918D429</td> 代码(Sp编号):KLE3KAN918D429 在C语言中是否有一种方法可以指定源文本、开始字符串、结束字符串,并在开始和结束之间获取字符串?根据评论,您最好使用解析库来迭代DOM结构,但如果您可以对要解析的html做

我想从以下html代码中提取字符串KLE3KAN918D429

<td class="Labels"> CODE (Sp Number): </td><td width="40.0%"> KLE3KAN918D429</td>
代码(Sp编号):KLE3KAN918D429

在C语言中是否有一种方法可以指定源文本、开始字符串、结束字符串,并在开始和结束之间获取字符串?

根据评论,您最好使用解析库来迭代DOM结构,但如果您可以对要解析的html做出一些假设,您可以执行以下操作:

var html = "<td class=\"Labels\"> CODE (Sp Number): </td><td width=\"40.0%\"> KLE3KAN918D429</td>";
var labelIndex = html.IndexOf("<td class=\"Labels\">");
var pctIndex = html.IndexOf("%", labelIndex);
var closeIndex = html.IndexOf("<", pctIndex);
var key = html.Substring(pctIndex + 3, closeIndex - pctIndex - 3).Trim();
System.Diagnostics.Debug.WriteLine(key);
var html=“代码(Sp编号):KLE3KAN918D429”;
var labelIndex=html.IndexOf(“”);
var pctIndex=html.IndexOf(“%”,labelIndex);

var closeIndex=html.IndexOf(“我真的建议为此使用HTMLAgilityPack

这很容易:

var doc = new HtmlDocument();
doc.LoadHtml(@"<td class=""Labels""> CODE (Sp Number): </td><td width=""40.0%""> KLE3KAN918D429</td>");

var tdNode = doc.DocumentNode.SelectSingleNode("//td[@class='Labels' and text()=' CODE (Sp Number): ']/following-sibling::td[1]");
Console.WriteLine(tdNode.InnerText.Trim());

正如其他人已经建议的,您应该使用类似的方法来解析html。不要使用正则表达式或其他方法来解析html

html字符串中有多个
td
节点。使用
td[last()]
XPath获取最后一个节点非常简单:

string html = "<td class=\"Labels\"> CODE (Sp Number): </td><td width=\"40.0%\"> KLE3KAN918D429</td>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var td = doc.DocumentNode.SelectSingleNode("td[last()]");
var result = td.InnerText.Trim(); // "KLE3KAN918D429"
string html=“代码(Sp编号):KLE3KAN918D429”;
HtmlDocument doc=新的HtmlDocument();
doc.LoadHtml(html);
var td=doc.DocumentNode.SelectSingleNode(“td[last()]”);
var result=td.InnerText.Trim();/“KLE3KAN918D429”

FYI:最好使用HTML Agility Pack之类的HTML解析器谢谢,它工作得很好。我认为这个问题只有一行解决方案:)如果你把它包装成一个函数,它就是任何一行真正的函数;)
string html = "<td class=\"Labels\"> CODE (Sp Number): </td><td width=\"40.0%\"> KLE3KAN918D429</td>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var td = doc.DocumentNode.SelectSingleNode("td[last()]");
var result = td.InnerText.Trim(); // "KLE3KAN918D429"