[英]Extract string from HTML
我想从以下html代码中提取字符串KLE3KAN918D429 :
<td class="Labels"> CODE (Sp Number): </td><td width="40.0%"> KLE3KAN918D429</td>
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);
可能需要足够的脆性,但有时又快速又脏。
正如其他人已经建议的那样,您应该使用HtmlAgilityPack之类的东西来解析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"
我真的建议为此使用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());
在开始之前,请从NuGet添加HtmlAgilityPack:
Install-Package HtmlAgilityPack
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.