2

我想从以下字符串中访问字体系列名称,然后在对我想放回的名称应用过滤器之后。这是我的字符串:

字体大小:36 像素;字体样式:正常;字体变体:正常;字体粗细:600;字体拉伸:正常;文本对齐:居中;行高:125%;字母间距:0 像素;字-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#6b055f;fill-opacity:1;stroke:none;font-family:Abel;-inkscape-font-specification:'Abel,半粗体'

我怎么能在 c# 中做到这一点?

4

4 回答 4

4

您可以使用String该类,它公开了您需要破解它的所有方法。例如,用于String.IndexOf查找字符或字符串的索引,并String.Substring提取,则可以使用String.Replace.

这应该足以开始,如果您有与问题相关的特定问题,请提出。

于 2012-12-17T14:06:41.313 回答
2

您可以使用Regex.Replace

string test = "stroke:none;font-family:Abel;-inkscape-font-specification:'Bickham Script Pro Semibold, Semi-Bold'";

// search for the font style
Regex rex = new Regex(";font-family:.*;");

// replace the font with a new font
string newString = rex.Replace(test,";font=famliy:Arial;");
于 2012-12-17T14:10:07.533 回答
0

我会使用 ASP.NET 的强大功能,而不是自己解析字符串。为什么要重新发明轮子?

string style = "font-size:36px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#6b055f;fill-opacity:1;stroke:none;font-family:Abel;-inkscape-font-specification:'Abel, Semi-Bold'";
System.Web.UI.WebControls.Label label = new System.Web.UI.WebControls.Label();
label.Style.Value = style;
label.Style["font-family"] = "Verdana";
style = label.Style.Value;
label.Dispose();

这也适用于 WinForms,您只需添加对 System.Web 程序集的引用。

于 2012-12-17T14:15:33.480 回答
0

你可以这样做:

public static class CssStyle
{
    public static string Update(string style, string key, string value)
    {
        var parts = style.Split(';');

        for (int i = 0; i < parts.Length; i++)
        {
            if (parts[i].StartsWith(key))
            {
                parts[i] = key + ":" + value;
                break;
            }
        }

        return string.Join(";", parts);
    }
}

这将允许您拥有一个可以更新样式的任何部分的通用函数。如果样式尚不存在,您也可以扩展它以添加样式。

于 2012-12-17T14:20:33.773 回答