0

如何从数据库中并使用ckeditor保存的字符串中删除字体类型?例如:

<div style="font-family: Tahoma; color: Red;">
Foo FOooooo
</div>

例如,我想将其删除或更改为 Verdana。

我知道我可以使用替换,但字体名称可以不同,我知道我可以使用子字符串方法。但是有什么简单的方法可以去除吗?

4

2 回答 2

1

有两种方法,最简单的方法,只需使用“简单”正则表达式删除完整的 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 并直接更改属性。

http://htmlagilitypack.codeplex.com/

于 2012-10-06T16:49:21.340 回答
1

试试这个简单的方法regex

捕获font-familycolor样式:

<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)

将匹配的子表达式捕获到命名组中。

于 2012-10-07T05:49:50.710 回答