我有以下
<option value="Abercrombie">Abercrombie</option>
我的文件大约有2000行,每行有不同的位置,我试图理解正则表达式,但遗憾的是我学到的东西都不会进去,我不确定这是否可行。
我想要做的是运行一个正则表达式,它将删除上面的HTML,这将留下以下内容
Abercrombie
然后我想在前面加上特定数字的前缀,结果就是例如
2,Abercrombie
这可能吗?
答案 0 :(得分:1)
不要使用正则表达式,因为HTML不是常规语言。您可以使用Linq的XML解析器。如果要处理整个文件,可以替换内联元素:
int myNumber = 2;
var html = @"<html><body><option value=""Abercrombie"">Abercrombie</option><div><option value=""Forever21"">Forever21</option></div></body></html>";
var doc = XDocument.Load(new StringReader(html));
var options = doc.Descendants().Where(o => o.Name == "option").ToList();
foreach (var element in options)
{
element.ReplaceWith(string.Format("{0},{1}", myNumber, element.Value));
}
var result = doc.ToString();
这给出了:
<html>
<body>2,Abercrombie<div>2,Forever21</div></body>
</html>
如果您只想获取特定标记的文本,可以使用以下内容:
int myNumber = 2;
var html = @"<option value=""Abercrombie"">Abercrombie</option>";
var doc = XDocument.Load(new StringReader(html));
var element = doc.Descendants().FirstOrDefault(o => o.Name == "option");
var attribute = element.Attribute("value").Value;
var result = string.Format("{0},{1}", myNumber, attribute);
//result == "2,Abercrombie"