2

次の文字列から font-family 名にアクセスし、名前にフィルターを適用した後、元に戻したいと思います。ここに私の文字列があります:

font-size:36px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;単語-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

あなたはこのようなことをすることができます:

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 に答える
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 に答える