是否可以在字符串格式说明符中添加一些描述性文本?
例:
string.Format ("{0:ForeName} is not at home", person.ForeName);
Run Code Online (Sandbox Code Playgroud)
在示例ForeName中添加了描述.
上面的语法显然是不正确的,但只是为了表明这个想法.
我问的原因是因为在我的情况下字符串是在资源文件中,所以在你目前只看到的资源文件中
{0} is not at home
Run Code Online (Sandbox Code Playgroud)
在某些情况下,很难掌握其背景{0}.
编辑:
在c#6中$引入了与运算符的字符串插值,因此string.Format不再需要:
$"{person.ForeName} is not at home";
Run Code Online (Sandbox Code Playgroud)
小智 13
我们通常把意见变成我们的资源文件,例如{0} = Forename.
然后,任何可能正在翻译字符串的人都知道{0}代表什么并且可以相应地进行翻译.
此外,如果您使用ReSharper,则可以在将字符串添加到资源时同时输入注释.
art*_*kai 13
Phil Haack和Peli撰写了几篇关于默认string.format函数替代品的有趣博客文章.他们可能会对你感兴趣
基本上它们允许您在格式字符串中使用对象属性,如下所示:
string s = NamedFormat("Hello {FullName} ({EmailAdrress})!", person);
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到相关的博客文章:
也许这些博客文章中涵盖的解决方案之一可以满足您的需求.
对于字符串,您的方法应该有效,因为字符串将忽略任何格式说明符.但是,您可能会意外地将其用于非字符串类型,在这种情况下,字符串将被转换为格式代码或字面显示:
string.Format ("{0:ForeName} is not at home", "Johnny");
//"Johnny is not at home"
string.Format ("{0:ForeName} will be home at {1:HomeTime}", "Johnny", DateTime.Today)
//Johnny will be home at 0o0eTi0e -- H, h, and m are DateTime format codes.
Run Code Online (Sandbox Code Playgroud)
但是,由于您将这些存储在资源文件中,我会使用资源文件中的"注释"字段 - 您可以存储格式字符串的副本并在那里添加您的描述.