C# C中的Demistify string.format#

C# C中的Demistify string.format#,c#,asp.net,string,C#,Asp.net,String,我知道我要问的是愚蠢的。 就这样。我有一个C代码,其中有一个字符串,如下所示: string.Format( "{0}\"icon\":\"{2}\",\"alert\":\"{3}\",\"governanceType\":\"{4}\"{1}", "{", "}", "notificationicon", governanceName, tips.GovernanceType) 任何人都可以解释上述代码的意思。将字符串中的标记

我知道我要问的是愚蠢的。 就这样。我有一个C代码,其中有一个字符串,如下所示:

string.Format(
    "{0}\"icon\":\"{2}\",\"alert\":\"{3}\",\"governanceType\":\"{4}\"{1}", 
    "{", 
    "}",    
    "notificationicon", 
    governanceName, 
    tips.GovernanceType)
任何人都可以解释上述代码的意思。

将字符串中的标记替换为表示后续参数从零开始的索引的值

为清晰起见,添加了注释:

string.Format(
    "{0}\"icon\":\"{2}\",\"alert\":\"{3}\",\"governanceType\":\"{4}\"{1}", 
    "{",                // {0}
    "}",                // {1}
    "notificationicon", // {2}
    governanceName,     // {3}
    tips.GovernanceType)// {4}
但是,大括号值可能只是为了避免错误。一个更明确的解决办法是避开它们:

string.Format(
    "{{\"icon\":\"{0}\",\"alert\":\"{1}\",\"governanceType\":\"{2}\"}}", 
    "notificationicon", // {0}
    governanceName,     // {1}
    tips.GovernanceType)// {2}
用后续参数的从零开始的索引表示的值替换字符串中的标记

为清晰起见,添加了注释:

string.Format(
    "{0}\"icon\":\"{2}\",\"alert\":\"{3}\",\"governanceType\":\"{4}\"{1}", 
    "{",                // {0}
    "}",                // {1}
    "notificationicon", // {2}
    governanceName,     // {3}
    tips.GovernanceType)// {4}
但是,大括号值可能只是为了避免错误。一个更明确的解决办法是避开它们:

string.Format(
    "{{\"icon\":\"{0}\",\"alert\":\"{1}\",\"governanceType\":\"{2}\"}}", 
    "notificationicon", // {0}
    governanceName,     // {1}
    tips.GovernanceType)// {2}

如注释中所述,第一个参数是要格式化的字符串,所有后续参数都将插入到占位符的位置,由格式字符串中的
{x}
表示(其中x是索引整数)。格式字符串中经常出现的
\
是转义字符,用于阻止内联
-字符结束字符串(而是按字面形式打印).

如注释中所述,第一个参数是要格式化的字符串,所有后续参数将插入到占位符的位置,由格式字符串中的
{x}
表示(其中x是索引整数)。格式字符串中频繁出现的
\
是转义字符,可防止内联
-字符结束字符串(它们按字面打印)。

格式允许使用{}中的参数而不是串联(“+var+”)来生成字符串。Fromat比串联更易于读取。在您的案例4参数中:

{0} = "{"
{1} = "}"
{2} = "notificationicon"
{3} = value of governanceName
{4} = value of tips.GovernanceType

最后,参数{}将被值替换,您将获得新的格式化字符串

格式允许使用{}中的参数而不是串联(“+var+”)来构建字符串。Fromat比串联更易于读取。在您的案例4参数中:

{0} = "{"
{1} = "}"
{2} = "notificationicon"
{3} = value of governanceName
{4} = value of tips.GovernanceType

最后,参数{}将被值替换,您将得到新的格式化字符串

,为了使其更可读和易于理解,我将
字符替换为
字符。 因此,命令可以简化如下:

string.Format("{{'icon':'notificationicon','alert':'{0}','governanceType':'{1}'}}", 
                governanceName, tips.GovernanceType);
当我向它添加
.Replace('\'','\'')
时,它会生成以下字符串(假设governanceName=“SomeGovernanceName”,tips.GovernanceType=“SomeGovernanceType”):


为了使它更易读和理解,我将
字符替换为
字符。 因此,命令可以简化如下:

string.Format("{{'icon':'notificationicon','alert':'{0}','governanceType':'{1}'}}", 
                governanceName, tips.GovernanceType);
当我向它添加
.Replace('\'','\'')
时,它会生成以下字符串(假设governanceName=“SomeGovernanceName”,tips.GovernanceType=“SomeGovernanceType”):



第一个参数是包含占位符
{}
的格式字符串。这些占位符包含一个以零开始的索引。
String.Format
中的第二个参数属于index=0,第三个参数属于index=1,依此类推。因此,
{0}
将被替换为
“notificationicon”
{1}
将被替换为
governanceName
@Grantwiney他做了,仔细看,0和1是卷曲的brackets@TimSchmelter:这似乎是目前为止最好的答案……:)@Chris除了
{0}
将替换为“{”和
{1}
为“}”@juharr:我忽略了
{”
是第一个参数。现在问题已重新格式化,更清楚了。OP应该阅读详细解释的文档。第一个参数是包含占位符的格式字符串
{}
。这些占位符包含一个以零开始的索引。
字符串中的第二个参数。Format
属于index=0,第三个参数属于index=1,依此类推。因此
{0}
将替换为
“notificationicon”
{1}
将被替换为
政府名称
@GrantWinney他做了,仔细看,0和1是卷曲的brackets@TimSchmelter:这似乎是目前为止最好的答案…:)@Chris,除了
{0}
将被“{”替换,而
{1}
将被“}”替换。@juharr:我忽略了
{”
是第一个参数。现在问题已重新格式化,它更清楚了。OP应该阅读详细解释它的文档。注释可以增加清晰度,但只有在您已经知道代码的含义时才可以。这并不能真正解释代码以任何方式做了什么,这就是问题所在。@Chris well代码实际上发送了使用字符串格式向设备发送推送通知above@iJay我的问题是你的问题是问字符串格式意味着什么直到最新的编辑我没有亲自考虑它在做什么。之后你要做的是你的事情。vote@iJay-我认为投票结果是b基于原始编辑(根据上下文而定)注释增加了清晰度,但只有当您已经知道代码的含义时,注释才是真正的。这并不能真正解释代码以任何方式做了什么,这就是问题所在。@Chris well代码实际上使用字符串格式向设备发送推送通知above@iJay:我的意思是,您的问题是询问字符串格式的含义,直到最新的编辑,我没有亲自考虑它正在做什么。在那之后你做什么是你的事。vote@iJay-我认为投票是基于原始编辑(根据上下文)