使用字符串格式

时间:2016-01-11 21:35:38

标签: c# string-interpolation c#-6.0

public static string PadZero(this double number, int decimalPlaces)
    {
        var requiredFormat = "0." + "".PadRight(decimalPlaces, '0');
        var something = $"{number:requiredFormat}";

        return number.IsNotZero() ? something: string.Empty;
    }

这是一个帮助函数,用于将零填充为双数字,用户可以通过 decimalPlaces 传递需要填充的零个数。 上面的函数在我的单元测试中失败,在所有测试用例中收到的输出都是{requiredFormat}。 我刚刚使用通用变量 requiredFormat 替换了var something = $"{number:0.00}";,它可以处理任意数量的零填充。

1 个答案:

答案 0 :(得分:3)

您的示例有两个问题。第一个是something的值不会产生可用于格式化数字的字符串。第二个原因是您没有使用something来使用string.format执行数字格式。

首先,声明:

var something = $"{number:requiredFormat}";

不会给你想要的结果,这将是一个类似于:

的字符串
{0:0.0000}

尝试将代码更改为:

var something = $"{{0:{requiredFormat}}}";

如果在执行该语句后执行Console.WriteLine(something),您可以检查something的值,以确保它正是您要查找的内容。

之后,更改此行:

return number.IsNotZero() ? something: string.Empty;

阅读:

return number.IsNotZero() ? string.Format(something, number) : string.Empty;

即使使用Interpolated Strings,您也必须构建变量格式并将其应用于两个单独的步骤。

希望有所帮助。