データベースにあり、ckeditorで保存されている文字列からフォントタイプを削除するにはどうすればよいですか? 例えば:
<div style="font-family: Tahoma; color: Red;">
Foo FOooooo
</div>
たとえば、それを削除したり、Verdana に変更したりします。
置換を使用できることはわかっていますが、フォント名は異なる場合があり、部分文字列メソッドを使用できることはわかっています。とありますが、簡単に取り除く方法はありますか?
これでこの簡単な方法を試してください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)一致した部分式を名前付きグループにキャプチャします。
簡単な方法は 2 つあります。「単純な」正規表現を使用して完全な 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 を解析し、属性を直接変更します。