关于c#:在String.Format()中使用{StringToReplace}和{0}时抛出异常

Exception is thrown when using {StringToReplace} and {0} in String.Format()

例如,

1
2
string str= string.Format(@"<p style=""font-family:Times New Roman, serif;font-size: 12pt;"">Total Qty {qty} on Date {0}
</p>"
,dr["Date"]);

我想稍后更换数量。它抛出异常"Input string was not in a correct format"

有人能说出原因和可能的解决办法吗?


我认为你应该这样使用:

1
string str= string.Format(@"Total Qty {{qty}} on Date {0}","01/01/2017");

得到输出为Total Qty {qty} on Date 01/01/2017。你没有对qty做任何说明,如果它是一个变量,你想在{}之间显示它的值,那么你应该用$代替@,这次代码如下:

1
2
int qty = 10;
string str = string.Format($"Total Qty : {qty} on Date : {{0}}","01/01/2017");

这次您将得到输出作为Total Qty : 10 on Date : 01/01/2017


我认为你应该使用$而不是@,因为。字符串内插值,我们只需在字符串前面加上一个$(就像我们对逐字字符串使用@)。然后,我们简单地用大括号(即和)包围要插入的表达式。

1
2
3
int qty = 10;
string str = string.Format($"Total Qty {qty} on Date {{0}}","01/01/2017");
Console.WriteLine(str);

输出是

Total Qty 10 on Date 01/01/2017

可以看到工作的小提琴


您需要使用此格式:

1
$"Total Qty {qty} on Date {{0}}","01/01/2017"

下面是一个工作示例:https://dotnetfiddle.net/ujjys