C#中的字符串格式
本文关键字:格式 字符串 | 更新日期: 2023-09-27 18:28:29
我知道我要问的问题很傻。所以它开始了。我有一个C#代码,其中有一个字符串,如下所示:
string.Format(
"{0}'"icon'":'"{2}'",'"alert'":'"{3}'",'"governanceType'":'"{4}'"{1}",
"{",
"}",
"notificationicon",
governanceName,
tips.GovernanceType)
有人能解释一下上面的代码是什么意思吗。
String.Format
将字符串中的标记替换为表示后续参数从零开始的索引的值。
为清晰起见,添加了注释:
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}
格式允许使用{}中的参数而不是串联("+var+")来构建字符串。Fromat比串联更容易阅读。在你的案例中有4个论点:
{0} = "{"
{1} = "}"
{2} = "notificationicon"
{3} = value of governanceName
{4} = value of tips.GovernanceType
最后,参数{}将被值替换,您将获得新的格式化字符串
如注释中所述,第一个参数是要格式化的字符串,所有后续参数都将插入占位符的位置,用格式字符串中的{x}
表示(其中x是索引整数)。格式字符串中常见的'
是转义字符,它们阻止内联"
-字符结束字符串(而是按字面打印)。
为了使其更易于阅读和理解,我将"
字符替换为'
字符。命令可以这样简化:
string.Format("{{'icon':'notificationicon','alert':'{0}','governanceType':'{1}'}}",
governanceName, tips.GovernanceType);
当我将.Replace('''',''"')
添加到其中时,它会生成以下字符串(假设governanceName="SomeGovernanceName",tips.GoverernanceType="Some GovernanceType"):
{"icon":"notificationicon","alert":"SomeGovernanceName","governanceType":"SomeGovernanceType"}