如何从数据库中并使用ckeditor保存的字符串中删除字体类型?例如:
<div style="font-family: Tahoma; color: Red;">
Foo FOooooo
</div>
例如,我想将其删除或更改为 Verdana。
我知道我可以使用替换,但字体名称可以不同,我知道我可以使用子字符串方法。但是有什么简单的方法可以去除吗?
有两种方法,最简单的方法,只需使用“简单”正则表达式删除完整的 div 样式
private static Regex oClearHtmlScript = new Regex(@"<(.|\n)*?>", RegexOptions.Compiled);
public static string StripHTML(string sHtmlKeimeo)
{
if (string.IsNullOrEmpty(sHtmlKeimeo))
return string.Empty;
return oClearHtmlScript.Replace(sHtmlKeimeo, string.Empty);
}
困难的方法是,使用 Html Agility Pack(或任何其他类似的)来解析 html 并直接更改属性。
试试这个简单的方法regex
:
捕获font-family
和color
样式:
<div\s+style=\".*?font-family:(?<fontName>\s*[^;\"]*)?.*?color:(?<color>\s*[^;\"]*)?
以及您的替换代码:
String inputStr = "<div style=\"font-family: Tahoma; color: Red;\">";
foreach(Match m in Regex.Matches(inputStr, "<div\\s+style=\\\".*?font-family:(?<fontName>\\s*[^;\\\"]*)?.*?color:(?<color>\\s*[^;\\\"]*)?"))
{
inputStr = inputStr.Replace(m.Groups["fontName"].Value, "Vernada").Replace(m.Groups["color"].Value, "Blue");
}
解释:
(?<name> subexpression)
将匹配的子表达式捕获到命名组中。