首页 >后端开发 >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