我有以下字符串"</script><div id='PO_1WTXxKUTU98xDU1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>"
我需要从div标签中获取属性值。如何使用C#检索它。
答案 0 :(得分:1)
避免使用regex
Regex
不是解析HTML
个文件的好选择..
HTML不严格,格式也不规则..
你可以用htmlagilityPack这样做。
HtmlDocument doc = new HtmlDocument();
doc.Load(yourStream);
List<string> itemList = doc.DocumentNode.SelectNodes("//div[@id]")//selects all div having id attribute
.Select(x=>x.Attributes["id"].Value)//select the id attribute value
.ToList<string>();
//itemList will now contain all div's id attribute value
答案 1 :(得分:0)
严格解决问题,解决问题的方法之一就是隔离div
元素,将其解析为XElement
,然后以此方式提取属性值。
string bobo = "</script><div id='PO_1WTXxKUTU98xDU1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>";
string justDiv = bobo.Substring(bobo.IndexOf("<div"));
XElement xelem = XElement.Parse(justDiv);
var id = xelem.Attribute("id");
var value = id.Value;
肯定有很多方法可以解决这个问题,但这个方法可以解答邮件。
答案 2 :(得分:0)
如果你是一个受虐狂,你可以做这个老派VB3风格:
string input = @"</script><div id='PO_1WTXxKUTU98xDU1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>";
string startString = "div id='";
int startIndex = input.IndexOf(startString);
if (startIndex != -1)
{
startIndex += startString.Length;
int endIndex = input.IndexOf("'", startIndex);
string subString = input.Substring(startIndex, endIndex - startIndex);
}
答案 3 :(得分:-1)
看起来像这样的.NET Regex可以解决这个问题
^</script><div id='(?<attrValue>[^']+)'.*$
然后,您可以将值保持为
MatchCollection matches = Regex.Matches(input, @"^</script><div id='(?<attrValue>[^']+)'.*$");
if (matches.Count > 0)
{
var attrValue = matches[0].Groups["attrValue"];
}