如何在C#的字符串插值中使用可变格式字符串
实现方法
你可以把格式字符串抽成独立变量,通过decimal.ToString()或string.Format()方法传递这个格式参数,具体实现如下:
方式一:使用数值类型的ToString方法
直接调用decimal的ToString(string format)重载,把格式字符串作为参数传入,这是最直接的方式:
var d = 1.25M; // 定义格式字符串,可直接作为参数传递给其他方法 string decimalFormat = "#,#.##;(#,#.##);0"; var val = d.ToString(decimalFormat);
方式二:使用string.Format方法
如果需要同时格式化多个值这类更灵活的场景,可以用string.Format组合格式字符串:
var d = 1.25M; string decimalFormat = "#,#.##;(#,#.##);0"; var val = string.Format("{0:" + decimalFormat + "}", d);
作为方法参数传递示例
把格式字符串作为参数传给自定义方法,实现格式化逻辑复用:
// 自定义格式化方法 public string FormatDecimalValue(decimal inputNumber, string formatString) { return inputNumber.ToString(formatString); } // 调用示例 var d = 1.25M; string twoDecimalFormat = "#,#.##;(#,#.##);0"; var formattedResult = FormatDecimalValue(d, twoDecimalFormat);
这里的格式字符串#,#.##;(#,#.##);0和你原逻辑完全一致:正数显示千分位加两位小数,负数用括号包裹千分位加两位小数,零则显示为0。
内容的提问来源于stack exchange,提问作者Anand
相关产品推荐
相关产品推荐

