System.String格式

时间:2012-03-22 04:57:46

标签: c# vb.net

我正在使用标准String.Format方法。它正在使用数字对象。

Console.WriteLine("obj1 = {0} and obj2 = {1}", "obj1", "obj2");

我想使用命名索引。就像这个

Console.WriteLine("obj1 = {o1} and obj2 = {o2}", 
                  new { o1 = "obj1", o2 = "obj2"});

我如何使用相同的最后一个代码?

3 个答案:

答案 0 :(得分:3)

在这种情况下,您可以尝试使用Replace("{o1}", o1.ToString())方法,

答案 1 :(得分:2)

String.Format仅支持格式字符串的位置(0,1,2,...)值。

您需要编写自己的版本以支持命名参数。

答案 2 :(得分:1)

你不能。

在您提供的示例中,您可以创建一个方法来执行以下操作:

private void PrintVariables(Dictionary<string, object> variables)
{
    Console.WriteLine(string.Join(
        " and ", variables.Select(kvp => string.Format("{0} = {1}",
                                                       kvp.Key,
                                                       kvp.Value))));
}

来自外部的用法可能是:

int num = 3;
string str = "hi";
bool b = true;

this.PrintVariables(new Dictionary<string, object>
                        {
                            {"MyNumber", num},
                            {"MyString", str},
                            {"MyBool", b}
                        });