hwc*_*rwe 77 .net c# vb.net string string-formatting
使用String.Format()它可以以DateTime许多不同的方式格式化例如对象.每当我寻找所需的格式时,我都需要在互联网上搜索.我几乎总能找到一个可以使用的例子.例如:
String.Format("{0:MM/dd/yyyy}", DateTime.Now); // "09/05/2012"
Run Code Online (Sandbox Code Playgroud)
但我不知道它是如何工作的以及哪些类支持这些"魔术"附加字符串.
所以我的问题是:
String.Format将附加信息映射MM/dd/yyyy到字符串结果?String.Format("{0:MyCustomFormat}", new MyOwnClass())yam*_*men 86
String.Format匹配字符串({0}etc)中的每个标记与相应的对象:http://msdn.microsoft.com/en-us/library/system.string.format.aspx
可选地提供格式字符串:
{ index[,alignment][ : formatString] }
如果formatString提供,则相应的对象必须实现IFormattable,特别ToString是接受formatString并返回相应格式化字符串的方法:http://msdn.microsoft.com/en-us/library/system.iformattable.tostring.aspx
一个IFormatProvider也可以使用能够用于捕获基本格式标准/默认值等.实施例在这里和在这里.
所以按顺序回答你的问题:
它在对象上使用IFormattable接口的ToString()方法DateTime并传递MM/dd/yyyy格式字符串.它是返回正确字符串的实现.
实现的任何对象都IFormattable支持此功能.你甚至可以自己写!
是的,见上文.
Dea*_*mas 18
根据我的理解,你需要在你的类中实现IFormattable来支持它.然后有方法ToString,它接受你传递给String.Format的参数.
这是一个例子.
// Define other methods and classes here
public class Sample : IFormattable
{
public string ToString(string format, IFormatProvider provider)
{
return String.Concat("Your custom format was ", format);
}
}
String.Format("{0:MyCustomFormat}", new Sample())
Run Code Online (Sandbox Code Playgroud)
查看官方 MSDN 文档,这里有 DateTime 格式字符串的完整列表:http : //msdn.microsoft.com/en-us/library/az4se3k1.aspx。确实有不少“神奇”的字符串。
据我所知,并非所有类型都有“有趣”的格式,但所有类型都支持ToString(). 如果你需要格式化一个内置对象,你可以添加一个扩展方法来完成它,但通常在任何需要它的地方提供格式化(或者换句话说,我只为我自己的类型编写了自定义格式化程序) .
是的,您可以编写自己的数据,如果您有可以以不同方式格式化的数据,您可能应该通过实现 IFormattable 来编写自定义格式化程序,再次参见此处的文档:http : //msdn.microsoft.com/en-us/图书馆/system.iformattable.aspx。这相当简单,您只需检查提供的字符串并根据这些写出您的数据,幕后没有任何魔法:-)
| 归档时间: |
|
| 查看次数: |
31746 次 |
| 最近记录: |