在String.Format()中使用{StringToReplace}和{0}时抛出异常

时间:2017-01-20 04:41:32

标签: c# asp.net

例如,

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

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

有人能说出原因和可能的解决方案吗?

3 个答案:

答案 0 :(得分:3)

我认为你应该这样使用:

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

将输出设为Total Qty {qty} on Date 01/01/2017。您没有在qty上给出任何注释,如果它是一个变量,并且您希望在{}之间显示其值,那么您应该使用$代替@这次代码将是这样的:

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)

我认为您应该使用$代替@,因为。在String Interpolation ,我们只需在字符串前加上$(就像我们使用@作为逐字字符串一样)。然后,我们简单地用大括号(即{和})

包围我们想要插入的表达式
int qty = 10;
string str = string.Format($"Total Qty {qty} on Date {{0}}","01/01/2017");
Console.WriteLine(str);

输出

  

2017年1月1日的总数量10

可以看到Working fiddle

答案 2 :(得分:1)

您需要使用以下格式:

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

以下是一个工作示例:https://dotnetfiddle.net/UJjJyS