Joh*_*Deo 8 c# string formatting tostring
创建了一个自己的数字类型(实际上DoubleDouble),我想实现该IFormattable接口.所以我必须以某种方式解析格式字符串.
public string ToString(string format, IFormatProvider formatProvider) {
// formatting string according to format and using formatprovider?
return formattedString;
}
Run Code Online (Sandbox Code Playgroud)
该类的用户应该能够将其用作double(或任何其他数字格式)的替代品.
String.Format("{0:0.##}", (DoubleDouble)123.4567);
Run Code Online (Sandbox Code Playgroud)
我的问题是,有人知道一个关于这个的好教程或者可以给我一些提示吗?如何在此过程中支持本地化?
如何解析格式字符串? 是否有一些方法可以帮助完成这项任务,或者我必须通过"手"与regexp等完成所有这些操作?
我真的寻找帮助,但找不到任何帮助,如果你找到其他语言(C,C++)的东西可能会有所帮助,请告诉我.
在此过程中如何支持本地化?
像下面这样:
public string ToString(string format, IFormatProvider formatProvider)
{
CultureInfo culture = formatProvider as CultureInfo;
if (culture != null)
{
// Now you can do things like
// culture.NumberFormat.NumberDecimalSeparator, etc.
}
}
Run Code Online (Sandbox Code Playgroud)
如何解析格式字符串?是否有一些方法可以帮助完成这项任务,或者我是否必须使用正则表达式等“手动”完成这一切?
.NET 框架中没有公共 API 可以为您完成此操作。如果您查看.NET 基元数值类型的实现的源代码IFormattable,它们最终都会调用外部方法,因此它们没有提供任何见解。您可能需要使用 RegEx 之类的东西来解析格式字符串。然后,您可以除以 的最大幂10来计算输出的第一位数字,减去该值,然后重复较小的幂,10直到生成所有数字。