使用字符串插值内的变量指定小数位

tse*_*mer 5 c# string-interpolation c#-6.0

我有一个字符串格式,其中包括两个整数变量,每个变量都需要格式化为可变长度:

int x = 1234;
int y = 42;

// Simplified, real values come from method outputs, so must use the variables:
int xFormatDigitCount = 7;
int yFormatDigitCount = 3; 

var xStringFormat = new string('0', xFormatDigitCount); // "0000000"
var yStringFormat = new string('0' ,yFormatDigitCount); // "000"
Run Code Online (Sandbox Code Playgroud)

现在我只能使用整数变量的.ToString()方法获得所需的格式:

var xString = x.ToString(xStringFormat);
var yString = y.ToString(yStringFormat);
return $"{xString}-{yString}";
Run Code Online (Sandbox Code Playgroud)

但这似乎是一种开销,因为字符串插值支持格式{var:format}.有没有办法让我的字符串只用字符串插值,而不使用x和y ToString()

wes*_*ton 3

有没有一种方法可以仅通过字符串插值来获取我的字符串,而不使用 x 和 y 的 ToSTring()

我不相信,但由于以下原因,它可以变得更加干净ToString("Dx")

合而为一(嵌套插值):

public string Format(int x, int y, int xDigitCount, int yDigitCount)
{
    return $"{x.ToString($"D{xDigitCount}")}-{y.ToString($"D{yDigitCount}")}";
}
Run Code Online (Sandbox Code Playgroud)

Stack Overflow 语法高亮跟不上,所以看起来很奇怪,但在 VS 中是这样的:

在此输入图像描述