我有如下文字
<span style="font-weight: 700;">Aanbod wielen (banden + velgen) </span>
<br><br>
<span style="font-weight: 500;">lichtmetalen originele Volvo set met winterbanden:<br>origineel:</span> Volvo<br>
<b>inch maat:</b> 15''<br>
<p>steek:</p> 5x108mm<br>
<span style="font-weight: 700;">naafgat:</span>
我需要用内嵌样式font-weight标识该span标签,并用<b>
标签替换,与结束标签相同,还要在c#中替换</b>
标签。我需要如下所示的文本。
<b>Aanbod wielen (banden + velgen)</b>
<br><br>
<b>lichtmetalen originele Volvo set met winterbanden:<br>origineel:</b> Volvo <br>
<b>inch maat:</b> 15''<br>
<p>steek:</p> 5x108mm<br>
<b>naafgat:</b>
那么我们如何识别。在这种情况下,请帮助我。
答案 0 :(得分:3)
您可以使用HtmlAgilityPack
将span
替换为b
。而且它是免费和开源的。
您也可以从HtmlAgilityPack
的nuget安装Install-Package HtmlAgilityPack -Version 1.8.9
public string ReplaceSpanByB()
{
HtmlDocument doc = new HtmlDocument();
string htmlContent = File.ReadAllText(@"C:\Users\xxx\source\repos\ConsoleApp4\ConsoleApp4\Files\HTMLPage1.html");
doc.LoadHtml(htmlContent);
if (doc.DocumentNode.SelectNodes("//span") != null)
{
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//span"))
{
var attributes = node.Attributes;
foreach (var item in attributes)
{
if (item.Name.Equals("style") && item.Value.Contains("font-weight"))
{
HtmlNode b = doc.CreateElement("b");
b.InnerHtml = node.InnerHtml;
node.ParentNode.ReplaceChild(b, node);
}
}
}
}
return doc.DocumentNode.OuterHtml;
}
输出:
答案 1 :(得分:1)
第一:不要使用正则表达式,尽管有可能,并且这样做似乎合乎逻辑,
这主要是错误的,充满痛苦。
可以在HERE
2nd:
使用HTML解析器(例如https://html-agility-pack.net/)遍历树
(您可以使用xPath轻松找到要替换的所有span
元素)
并用span
替换任何b
元素(不要忘记设置新的b
元素内容)
旁注:据我所知,不鼓励使用b
标签
因此,如果您只需要将跨度文本加粗...
已经是因为“ font-weight:bold”。
在https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b上:
从历史上看,该元素用于使文本变为黑体。自HTML4以来,样式信息已被弃用,因此该元素的含义已更改。”和“将HTML带给元素()用于将读者的注意力吸引到元素的内容上,这些内容在其他情况下没有特别的重要性。” –感谢@Richardissimo