我有一个字符串格式,其中包含两个整数变量,每个变量都需要格式化为可变长度:
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"
现在我只能使用整数变量'设法获得所需的格式。 .ToString()
方法:
var xString = x.ToString(xStringFormat);
var yString = y.ToString(yStringFormat);
return $"{xString}-{yString}";
但这似乎是一种开销,因为字符串插值支持格式{var:format}。有没有办法让我的字符串只使用字符串插值,而不使用x和y' s ToString()
?
答案 0 :(得分:3)
我不确定我是否理解这个问题,但是string.Format
的格式说明符,因此字符串插值是文本的 - 它们不接受变量。
您可以使用静态格式说明符:
$"{x:0000000}-{y:000}"
或诉诸好老string.Format
:
string.Format(
$"{{0:{new string('0', xFormatDigitCount)}}}-{{1:{new string('0', yFormatDigitCount)}}}",
x,
y);
修改强>
$"{x.ToString($"D{xFormatDigitCount}")}-{y.ToString($"D{yFormatDigitCount}")}"
答案 1 :(得分:2)
有没有办法让我的字符串只使用字符串插值,而不使用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}")}";
}
Stack Overflow语法高亮显示无法跟上,所以它看起来很奇怪,但这就是它在VS中的样子:
答案 2 :(得分:1)
您可以在插值字符串中调用ToString
方法。
$"{x.ToString(xStringFormat)}-{y.ToString(yStringFormat)}"