首頁 >後端開發 >C++ >C# 中如何實作命名字串格式化?

C# 中如何實作命名字串格式化?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-02 13:29:44763瀏覽

How Can Named String Formatting Be Achieved in C#?

C 中的命名字串格式化

Python 的字串格式化語法允許按名稱而不是位置進行格式化,使開發人員能夠直接在格式字串中使用變數名稱。然而,在 C# 中,內建的 String.Format 不支援此功能。

自訂解決方案

要在 C# 中實作命名字串格式化,您可以使用反射或範本實作自己的方法解析技術。

使用反思:

string myString = "{foo} is {bar} and {yadi} is {yada}".Inject(o);

使用模板解析:

Status.Text = "{UserName} last logged in at {LastLoginDate}".FormatWith(user);

改良方法:

public class FormattedString
{
    private readonly string _template;

    public FormattedString(string template)
    {
        _template = template;
    }

    public string FormatWith(object o)
    {
        var type = o.GetType();
        var props = type.GetProperties();

        return _template.Replace("{PropertyName}", prop.GetValue(o))
                        .Replace("{propertyName}", prop.GetValue(o))
                        .ToString();
    }
}

用法:

var formattedString = new FormattedString("{foo} is {bar} and {yadi} is {yada}");
Console.WriteLine(formattedString.FormatWith(new { foo = "alpha", bar = "beta", yadi = "gamma", yada = "delta" }));

字串插值(C# 6 及更高版本)

隨著 2015 年 C# 6 的發布,字串插值是作為允許命名字串格式化的內建功能引入的。語法類似上面討論的自訂方法:

$"{{some_variable}}: {{some_other_variable}}"

以上是C# 中如何實作命名字串格式化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn