命名为String.Format,这个可能吗?

37

我想使用{title}代替{0} {1}等,然后以某种方式填充数据(下面我使用了一个Dictionary)。但是这段代码无效并引发异常。我想知道是否可以做类似于我想要的东西。使用{0 .. N}不是问题,我只是好奇。

Dictionary<string, string> d = new Dictionary<string, string>();
d["a"] = "he";
d["ba"] = "llo";
d["lol"] = "world";
string a = string.Format("{a}{ba}{lol}", d);

4
请参阅:https://dev59.com/13M_5IYBdhLWcg3wlEBH#1322103 - Marc Gravell
12个回答

-2

这里有一个非常有用的好方法,可以在格式化电子邮件时使用:http://www.c-sharpcorner.com/UploadFile/e4ff85/string-replacement-with-named-string-placeholders/

编辑:

public static class StringExtension  
{  
    public static string Format( this string str, params Expression<Func<string,object>>[] args)  
    {  
        var parameters = args.ToDictionary( e=>string.Format("{{{0}}}",e.Parameters[0].Name), e=>e.Compile()(e.Parameters[0].Name));  

        var sb = new StringBuilder(str);  
        foreach(var kv in parameters)  
        {  
            sb.Replace( kv.Key, kv.Value != null ? kv.Value.ToString() : "");  
        }  

        return sb.ToString();  
    }  
}

使用示例:

public string PopulateString(string emailBody)  
{  
  User person = _db.GetCurrentUser();  
  string firstName = person.FirstName;    //  Peter  
  string lastName = person.LastName;      //  Pan  
  return StringExtension.Format(emailBody.Format(  
    firstname => firstName,  
    lastname => lastName  
  ));   
} 

-3

将(your Dictionary + foreach + string.Replace)封装在子例程或扩展方法中?

显然未经优化,但是...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接